乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 72|回复: 5

[编程交流] 画一个三角形

[复制链接]

40

主题

177

帖子

100

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
248
发表于 2022-7-5 23:08:20 | 显示全部楼层 |阅读模式
拿起两点,画一个三角形,120度等腰三角形。
 
000824m7bg9l8nbl3nb93b.jpg
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 23:31:47 | 显示全部楼层
您不需要lisp例程。将“多边形”命令与“边”选项一起使用。
 
这里有一个lisp例程来绘制三角形。您可能需要修改它以满足您的需要。
 
三角形。lsp
 
资料来源:CADTutor,2008年3月4日;作者:muck。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 23:40:24 | 显示全部楼层
也许是这样:
 
  1. (defun c:triang120 ( / unit mxv v^v transptucs transptwcs p1 p2 loop g p h gp p3 )
  2. (defun unit ( v / d )
  3.    (mapcar '(lambda ( x y ) (/ x y)) v (list (setq d (distance '(0.0 0.0 0.0) v)) d d))
  4. )
  5. (defun mxv ( m v )
  6.    (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
  7. )
  8. (defun v^v ( u v )
  9.    (list
  10.      (- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
  11.      (- (* (car  v) (caddr u)) (* (car  u) (caddr v)))
  12.      (- (* (car  u) (cadr  v)) (* (car  v) (cadr  u)))
  13.    )
  14. )
  15. (defun transptucs ( pt p1 p2 p3 / ux uy uz )
  16.    (setq uz (unit (v^v (mapcar '- p2 p1) (mapcar '- p3 p1))))
  17.    (setq ux (unit (mapcar '- p2 p1)))
  18.    (setq uy (unit (mapcar '- p3 p1)))
  19.    
  20.    (mxv (list ux uy uz) (mapcar '- pt p1))
  21. )
  22. (defun transptwcs ( pt pt1 pt2 pt3 / pt1n pt2n pt3n )
  23.    (setq pt1n (transptucs '(0.0 0.0 0.0) pt1 pt2 pt3))
  24.    (setq pt2n (transptucs '(1.0 0.0 0.0) pt1 pt2 pt3))
  25.    (setq pt3n (transptucs '(0.0 1.0 0.0) pt1 pt2 pt3))
  26.    (transptucs pt pt1n pt2n pt3n)
  27. )
  28. (setq p1 (getpoint "\nPick or specify start point : "))
  29. (setq p2 (getpoint "\nPick or specify end point : " p1))
  30. (setq loop t)
  31. (while loop
  32.    (setq g (grread t 15 0))
  33.    (if (eq (car g) 5)
  34.      (progn
  35.        (setq p (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) p1 p2))
  36.        (setq h (/ (distance p1 p2) (* 2.0 (sqrt 3.0))))
  37.        (setq gp (cadr g))
  38.        (if (not (minusp (cadr (transptucs gp p1 (polar p1 (angle p1 p2) 1.0) (polar p1 (+ (angle p1 p2) (* 0.5 pi)) 1.0)))))
  39.          (progn
  40.            (redraw)
  41.            (setq p3 (polar p (+ (angle p1 p2) (* 0.5 pi)) h))
  42.            (grdraw p1 p2 1 1)
  43.            (grdraw p2 p3 1 1)
  44.            (grdraw p3 p1 1 1)
  45.          )
  46.          (progn
  47.            (redraw)
  48.            (setq p3 (polar p (- (angle p1 p2) (* 0.5 pi)) h))
  49.            (grdraw p1 p2 1 1)
  50.            (grdraw p2 p3 1 1)
  51.            (grdraw p3 p1 1 1)
  52.          )
  53.        )
  54.      )
  55.      (progn
  56.        (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 3) (if (eq (getvar 'plinegen) 1) '(70 . 129) '(70 . 1)) (cons 38 (caddr (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t)))) (cons 10 (list (car (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t))) (cadr (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 10 (list (car (trans p2 1 (trans '(0.0 0.0 1.0) 1 0 t))) (cadr (trans p2 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 10 (list (car (trans p3 1 (trans '(0.0 0.0 1.0) 1 0 t))) (cadr (trans p3 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 210 (trans '(0.0 0.0 1.0) 1 0 t))))
  57.        (setq loop nil)
  58.      )
  59.    )
  60. )
  61. (redraw)
  62. (princ)
  63. )

 
M、 R。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:47:48 | 显示全部楼层
另一个,对于平行于WCS的平面:
  1. (defun c:2ptri ( / d1 d2 p1 p2 p3 p4 p5 v1 v2 x1 )
  2.    (if (and (setq p1 (getpoint "\n1st point: "))
  3.             (setq p2 (getpoint "\n2nd point: " p1))
  4.             (setq v1 (trans  (mapcar '- p1 p2) 1 0 t)
  5.                   v2 (trans '(0 0 1) 1 0 t)
  6.                   d1 (/ (distance p1 p2) 2)
  7.                   d2 (/ d1 (sqrt 3))
  8.                   p3 (trans p1 1 v1)
  9.                   x1 (car p3)
  10.             )
  11.             (progn
  12.                 (while (= 5 (car (setq p4 (grread t 13 0))))
  13.                     (redraw)
  14.                     (setq p5 (trans (list ((if (< x1 (car (trans (cadr p4) 1 v1))) + -) x1 d2) (cadr p3) (- (caddr p3) d1)) v1 1))
  15.                     (grdraw p1 p2 1 1)
  16.                     (grdraw p1 p5 1 1)
  17.                     (grdraw p2 p5 1 1)
  18.                 )
  19.                 (list (cadr p4))
  20.             )
  21.         )
  22.         (entmake
  23.             (list
  24.                '(000 . "LWPOLYLINE")
  25.                '(100 . "AcDbEntity")
  26.                '(100 . "AcDbPolyline")
  27.                '(090 . 3)
  28.                '(070 . 1)
  29.                 (cons 010 (trans p1 1 v2))
  30.                 (cons 010 (trans p2 1 v2))
  31.                 (cons 010 (trans p5 1 v2))
  32.                 (cons 210 v2)
  33.             )
  34.         )
  35.    )
  36.    (redraw) (princ)
  37. )
回复

使用道具 举报

40

主题

177

帖子

100

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
248
发表于 2022-7-6 00:02:05 | 显示全部楼层
马科,李,非常感谢!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:18:21 | 显示全部楼层
不客气!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:13 , Processed in 0.592896 second(s), 67 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表