乐筑天下

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

[编程交流] 用“或”填充一个区域

[复制链接]

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 15:45:41 | 显示全部楼层 |阅读模式
大家好,
 
有人知道如果可能的话,我用一条多段线(或引导线)填充一个区域,如图所示,通知lisp代码初始点、返回线的半径和空间限制(作为限制线),水平或垂直引导这些线,直到整个区域完全填充?。。。
 
提前感谢。。。
 
164547tiofc2fm1zrn2rmo.jpg
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 15:49:19 | 显示全部楼层
这是我的版本,但我不知道你怎么想-在某些情况下,它可能比相反的边界边(蛇的末端)短或长填充。。。
 
  1. (defun c:snakefill (/ ptlst lxm uxm lym rym p1 p2 p3 p4 ip r d1 d2 d3 d4 dmin dir dx dy ls lr lx ly n ss)
  2. (prompt "\nPick area...(lower-left corner+upper-right corner)")
  3. (command "_.rectangle" pause pause)
  4. (setq ptlst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (eq (car x) 10)) (entget (entlast)))))
  5. (setq ptlst (mapcar '(lambda (x) (trans x (entlast) 1)) ptlst))
  6. (prompt "\nDelta X of OCS: ") (princ (distance (car ptlst) (cadr ptlst)))
  7. (prompt "\nDelta Y of OCS: ") (princ (distance (cadr ptlst) (caddr ptlst)))
  8. (initget 4)
  9. (setq lxm (getdist "\nPick lower X of OCS offset margin <0.0>: "))
  10. (if (null lxm) (setq lxm 0.0))
  11. (initget 4)
  12. (setq uxm (getdist "\nPick upper X of OCS offset margin <0.0>: "))
  13. (if (null uxm) (setq uxm 0.0))
  14. (initget 4)
  15. (setq lym (getdist "\nPick left Y of OCS offset margin <0.0>: "))
  16. (if (null lym) (setq lym 0.0))
  17. (initget 4)
  18. (setq rym (getdist "\nPick right Y of OCS offset margin <0.0>: "))
  19. (if (null rym) (setq rym 0.0))
  20. (setq p1 (mapcar '+ (car ptlst) (list lym lxm)))
  21. (setq p2 (mapcar '+ (cadr ptlst) (list (- rym) lxm)))
  22. (setq p3 (mapcar '+ (caddr ptlst) (list (- rym) (- uxm))))
  23. (setq p4 (mapcar '+ (cadddr ptlst) (list lym (- uxm))))
  24. (setq ip (getpoint "\nPick start point of snake fill: "))
  25. (initget 7)
  26. (setq r (getdist "\nPick radius of snake fill: "))
  27. (setq d1 (distance ip p1) d2 (distance ip p2) d3 (distance ip p3) d4 (distance ip p4))
  28. (setq dmin (min d1 d2 d3 d4))
  29. (initget 1 "X Y")
  30. (setq dir (getkword "\nSnake direction - parallel to X or Y of OCS (X/Y): "))
  31. (if (equal dmin d1)
  32.    (progn
  33.      (setq dx (car (mapcar '- ip p1)))
  34.      (setq dy (cadr (mapcar '- ip p1)))
  35.      (if (eq dir "X")
  36.        (progn
  37.          (setq ls (- (distance p1 p2) dx r))
  38.          (setq lr (- (distance p1 p2) (* r 2.0)))
  39.          (setq ly (- (distance p1 p4) dy))
  40.          (setq n (fix (/ ly (* r 2.0))))
  41.          (command "_.pline" ip (polar ip 0.0 ls) "a" "s" (mapcar '+ (polar ip 0.0 ls) (list r r)) (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r 2.0))) "")
  42.          (setq ss (ssadd))
  43.          (ssadd (entlast) ss)
  44.          (command "_.pline" (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r 2.0))) (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r 2.0))) pi lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r 2.0))) pi lr) (list (- r) r)) (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r 2.0))) pi lr) (list 0.0 (* r 2.0))) "l" (polar (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r 2.0))) pi lr) (list 0.0 (* r 2.0))) 0.0 lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r 2.0))) pi lr) (list 0.0 (* r 2.0))) 0.0 lr) (list r r)) (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r 2.0))) pi lr) (list 0.0 (* r 2.0))) 0.0 lr) (list 0.0 (* r 2.0))) "")
  45.          (ssadd (entlast) ss)
  46.          (repeat (- (fix (/ n 2.0)) 1)
  47.            (command "_.copy" (entlast) "" '(0.0 0.0 0.0) (list 0.0 (* r 4.0) 0.0))
  48.            (ssadd (entlast) ss)
  49.          )
  50.        )
  51.        (progn
  52.          (setq ls (- (distance p1 p4) dy r))
  53.          (setq lr (- (distance p1 p4) (* r 2.0)))
  54.          (setq lx (- (distance p1 p2) dx))
  55.          (setq n (fix (/ lx (* r 2.0))))
  56.          (command "_.pline" ip (polar ip (* pi 0.5) ls) "a" "s" (mapcar '+ (polar ip (* pi 0.5) ls) (list r r)) (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r 2.0) 0.0)) "")
  57.          (setq ss (ssadd))
  58.          (ssadd (entlast) ss)
  59.          (command "_.pline" (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r 2.0) 0.0)) (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r 2.0) 0.0)) (* pi -0.5) lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r 2.0) 0.0)) (* pi -0.5) lr) (list r (- r))) (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r 2.0) 0.0)) (* pi -0.5) lr) (list (* r 2.0) 0.0)) "l" (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r 2.0) 0.0)) (* pi -0.5) lr) (list (* r 2.0) 0.0)) (* pi 0.5) lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r 2.0) 0.0)) (* pi -0.5) lr) (list (* r 2.0) 0.0)) (* pi 0.5) lr) (list r r)) (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r 2.0) 0.0)) (* pi -0.5) lr) (list (* r 2.0) 0.0)) (* pi 0.5) lr) (list (* r 2.0) 0.0)) "")
  60.          (ssadd (entlast) ss)
  61.          (repeat (- (fix (/ n 2.0)) 1)
  62.            (command "_.copy" (entlast) "" '(0.0 0.0 0.0) (list (* r 4.0) 0.0 0.0))
  63.            (ssadd (entlast) ss)
  64.          )
  65.        )
  66.      )
  67.    )
  68. )
  69. (if (equal dmin d2)
  70.    (progn
  71.      (setq dx (car (mapcar '- p2 ip)))
  72.      (setq dy (cadr (mapcar '- ip p2)))
  73.      (if (eq dir "X")
  74.        (progn
  75.          (setq ls (- (distance p2 p1) dx r))
  76.          (setq lr (- (distance p2 p1) (* r 2.0)))
  77.          (setq ly (- (distance p2 p3) dy))
  78.          (setq n (fix (/ ly (* r 2.0))))
  79.          (command "_.pline" ip (polar ip pi ls) "a" "s" (mapcar '+ (polar ip pi ls) (list (- r) r)) (mapcar '+ (polar ip pi ls) (list 0.0 (* r 2.0))) "")
  80.          (setq ss (ssadd))
  81.          (ssadd (entlast) ss)
  82.          (command "_.pline" (mapcar '+ (polar ip pi ls) (list 0.0 (* r 2.0))) (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r 2.0))) 0.0 lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r 2.0))) 0.0 lr) (list r r)) (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r 2.0))) 0.0 lr) (list 0.0 (* r 2.0))) "l" (polar (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r 2.0))) 0.0 lr) (list 0.0 (* r 2.0))) pi lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r 2.0))) 0.0 lr) (list 0.0 (* r 2.0))) pi lr) (list (- r) r)) (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r 2.0))) 0.0 lr) (list 0.0 (* r 2.0))) pi lr) (list 0.0 (* r 2.0))) "")
  83.          (ssadd (entlast) ss)
  84.          (repeat (- (fix (/ n 2.0)) 1)
  85.            (command "_.copy" (entlast) "" '(0.0 0.0 0.0) (list 0.0 (* r 4.0) 0.0))
  86.            (ssadd (entlast) ss)
  87.          )
  88.        )
  89.        (progn
  90.          (setq ls (- (distance p2 p3) dy r))
  91.          (setq lr (- (distance p2 p3) (* r 2.0)))
  92.          (setq lx (- (distance p1 p2) dx))
  93.          (setq n (fix (/ lx (* r 2.0))))
  94.          (command "_.pline" ip (polar ip (* pi 0.5) ls) "a" "s" (mapcar '+ (polar ip (* pi 0.5) ls) (list (- r) r)) (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r -2.0) 0.0)) "")
  95.          (setq ss (ssadd))
  96.          (ssadd (entlast) ss)
  97.          (command "_.pline" (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r -2.0) 0.0)) (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r -2.0) 0.0)) (* pi -0.5) lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r -2.0) 0.0)) (* pi -0.5) lr) (list (- r) (- r))) (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r -2.0) 0.0)) (* pi -0.5) lr) (list (* r -2.0) 0.0)) "l" (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r -2.0) 0.0)) (* pi -0.5) lr) (list (* r -2.0) 0.0)) (* pi 0.5) lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r -2.0) 0.0)) (* pi -0.5) lr) (list (* r -2.0) 0.0)) (* pi 0.5) lr) (list (- r) r)) (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi 0.5) ls) (list (* r -2.0) 0.0)) (* pi -0.5) lr) (list (* r -2.0) 0.0)) (* pi 0.5) lr) (list (* r -2.0) 0.0)) "")
  98.          (ssadd (entlast) ss)
  99.          (repeat (- (fix (/ n 2.0)) 1)
  100.            (command "_.copy" (entlast) "" '(0.0 0.0 0.0) (list (* r -4.0) 0.0 0.0))
  101.            (ssadd (entlast) ss)
  102.          )
  103.        )
  104.      )
  105.    )
  106. )
  107. (if (equal dmin d3)
  108.    (progn
  109.      (setq dx (car (mapcar '- p3 ip)))
  110.      (setq dy (cadr (mapcar '- p3 ip)))
  111.      (if (eq dir "X")
  112.        (progn
  113.          (setq ls (- (distance p3 p4) dx r))
  114.          (setq lr (- (distance p3 p4) (* r 2.0)))
  115.          (setq ly (- (distance p3 p2) dy))
  116.          (setq n (fix (/ ly (* r 2.0))))
  117.          (command "_.pline" ip (polar ip pi ls) "a" "s" (mapcar '+ (polar ip pi ls) (list (- r) (- r))) (mapcar '+ (polar ip pi ls) (list 0.0 (* r -2.0))) "")
  118.          (setq ss (ssadd))
  119.          (ssadd (entlast) ss)
  120.          (command "_.pline" (mapcar '+ (polar ip pi ls) (list 0.0 (* r -2.0))) (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r -2.0))) 0.0 lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r -2.0))) 0.0 lr) (list r (- r))) (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r -2.0))) 0.0 lr) (list 0.0 (* r -2.0))) "l" (polar (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r -2.0))) 0.0 lr) (list 0.0 (* r -2.0))) pi lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r -2.0))) 0.0 lr) (list 0.0 (* r -2.0))) pi lr) (list (- r) (- r))) (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip pi ls) (list 0.0 (* r -2.0))) 0.0 lr) (list 0.0 (* r -2.0))) pi lr) (list 0.0 (* r -2.0))) "")
  121.          (ssadd (entlast) ss)
  122.          (repeat (- (fix (/ n 2.0)) 1)
  123.            (command "_.copy" (entlast) "" '(0.0 0.0 0.0) (list 0.0 (* r -4.0) 0.0))
  124.            (ssadd (entlast) ss)
  125.          )
  126.        )
  127.        (progn
  128.          (setq ls (- (distance p3 p2) dy r))
  129.          (setq lr (- (distance p3 p2) (* r 2.0)))
  130.          (setq lx (- (distance p3 p4) dx))
  131.          (setq n (fix (/ lx (* r 2.0))))
  132.          (command "_.pline" ip (polar ip (* pi -0.5) ls) "a" "s" (mapcar '+ (polar ip (* pi -0.5) ls) (list (- r) (- r))) (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r -2.0) 0.0)) "")
  133.          (setq ss (ssadd))
  134.          (ssadd (entlast) ss)
  135.          (command "_.pline" (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r -2.0) 0.0)) (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r -2.0) 0.0)) (* pi 0.5) lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r -2.0) 0.0)) (* pi 0.5) lr) (list (- r) r)) (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r -2.0) 0.0)) (* pi 0.5) lr) (list (* r -2.0) 0.0)) "l" (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r -2.0) 0.0)) (* pi 0.5) lr) (list (* r -2.0) 0.0)) (* pi -0.5) lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r -2.0) 0.0)) (* pi 0.5) lr) (list (* r -2.0) 0.0)) (* pi -0.5) lr) (list (- r) (- r))) (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r -2.0) 0.0)) (* pi 0.5) lr) (list (* r -2.0) 0.0)) (* pi -0.5) lr) (list (* r -2.0) 0.0)) "")
  136.          (ssadd (entlast) ss)
  137.          (repeat (- (fix (/ n 2.0)) 1)
  138.            (command "_.copy" (entlast) "" '(0.0 0.0 0.0) (list (* r -4.0) 0.0 0.0))
  139.            (ssadd (entlast) ss)
  140.          )
  141.        )
  142.      )
  143.    )
  144. )
  145. (if (equal dmin d4)
  146.    (progn
  147.      (setq dx (car (mapcar '- ip p4)))
  148.      (setq dy (cadr (mapcar '- p4 ip)))
  149.      (if (eq dir "X")
  150.        (progn
  151.          (setq ls (- (distance p4 p3) dx r))
  152.          (setq lr (- (distance p4 p3) (* r 2.0)))
  153.          (setq ly (- (distance p4 p1) dy))
  154.          (setq n (fix (/ ly (* r 2.0))))
  155.          (command "_.pline" ip (polar ip 0.0 ls) "a" "s" (mapcar '+ (polar ip 0.0 ls) (list r (- r))) (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r -2.0))) "")
  156.          (setq ss (ssadd))
  157.          (ssadd (entlast) ss)
  158.          (command "_.pline" (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r -2.0))) (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r -2.0))) pi lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r -2.0))) pi lr) (list (- r) (- r))) (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r -2.0))) pi lr) (list 0.0 (* r -2.0))) "l" (polar (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r -2.0))) pi lr) (list 0.0 (* r -2.0))) 0.0 lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r -2.0))) pi lr) (list 0.0 (* r -2.0))) 0.0 lr) (list r (- r))) (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip 0.0 ls) (list 0.0 (* r -2.0))) pi lr) (list 0.0 (* r -2.0))) 0.0 lr) (list 0.0 (* r -2.0))) "")
  159.          (ssadd (entlast) ss)
  160.          (repeat (- (fix (/ n 2.0)) 1)
  161.            (command "_.copy" (entlast) "" '(0.0 0.0 0.0) (list 0.0 (* r -4.0) 0.0))
  162.            (ssadd (entlast) ss)
  163.          )
  164.        )
  165.        (progn
  166.          (setq ls (- (distance p4 p1) dy r))
  167.          (setq lr (- (distance p4 p1) (* r 2.0)))
  168.          (setq lx (- (distance p4 p3) dx))
  169.          (setq n (fix (/ lx (* r 2.0))))
  170.          (command "_.pline" ip (polar ip (* pi -0.5) ls) "a" "s" (mapcar '+ (polar ip (* pi -0.5) ls) (list r (- r))) (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r 2.0) 0.0)) "")
  171.          (setq ss (ssadd))
  172.          (ssadd (entlast) ss)
  173.          (command "_.pline" (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r 2.0) 0.0)) (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r 2.0) 0.0)) (* pi 0.5) lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r 2.0) 0.0)) (* pi 0.5) lr) (list r r)) (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r 2.0) 0.0)) (* pi 0.5) lr) (list (* r 2.0) 0.0)) "l" (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r 2.0) 0.0)) (* pi 0.5) lr) (list (* r 2.0) 0.0)) (* pi -0.5) lr) "a" "s" (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r 2.0) 0.0)) (* pi 0.5) lr) (list (* r 2.0) 0.0)) (* pi -0.5) lr) (list r (- r))) (mapcar '+ (polar (mapcar '+ (polar (mapcar '+ (polar ip (* pi -0.5) ls) (list (* r 2.0) 0.0)) (* pi 0.5) lr) (list (* r 2.0) 0.0)) (* pi -0.5) lr) (list (* r 2.0) 0.0)) "")
  174.          (ssadd (entlast) ss)
  175.          (repeat (- (fix (/ n 2.0)) 1)
  176.            (command "_.copy" (entlast) "" '(0.0 0.0 0.0) (list (* r 4.0) 0.0 0.0))
  177.            (ssadd (entlast) ss)
  178.          )
  179.        )
  180.      )
  181.    )
  182. )
  183. (command "_.pedit" "m" ss "" "j" "" "")
  184. (princ)
  185. )
M.R。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:54:47 | 显示全部楼层
这很接近,线可以是任何角度,等等,在路岛上的人字形只需创建一个内部多边形
 
  1. ; this use the extrim command to trim shape
  2. ; By Alan H Jan 2012
  3. (defun C:Chevron ( / obj pt1 pt2 pt3 pt4 newpt1 newpt2 )
  4. (acet-error-init (list
  5.                   (list   "cmdecho" 0
  6.                         "highlight" 0
  7.                         "regenmode" 1
  8.                            "osmode" 0
  9.                           "ucsicon" 0
  10.                        "offsetdist" 0
  11.                            "attreq" 0
  12.                          "plinewid" 0
  13.                         "plinetype" 1
  14.                          "gridmode" 0
  15.                           "celtype" "CONTINUOUS"
  16.                         "ucsfollow" 0
  17.                          "limcheck" 0
  18.                   )
  19.                   T     ;flag. True means use undo for error clean up.
  20.                   '(if redraw_it (redraw na 4))
  21.                  );list
  22. );acet-error-init
  23. (setq obj (car (entsel "\nPick pline or circle")))
  24. ; should do a object test here
  25. (setq whatis (cdr (assoc 0 (entget obj))))
  26. (if (= whatis "LWPOLYLINE")
  27. (princ)
  28. (progn
  29. (princ "\You have picked something other than a polyline ")
  30. (princ "\Remake into a pline and do again ")
  31. (setq dummy (getstring "\press any key"))
  32. (exit)
  33. ) ; progn
  34. ) ; if
  35. (setq pt1 (Getpoint "\nPick Line start point"))
  36. (setq pt2 (Getpoint pt1 "\nPick end point"))
  37. (command "line" pt1 pt2 "")
  38. (setq gap1 (getreal "\nenter spacing 1"))
  39. (setq gap2 (getreal "\nenter spacing 2"))
  40. (setq pt3 (getpoint "\nPick 1st cross point"))
  41. (setq pt4 (getpoint pt3 "\nPick 2nd cross point"))
  42. (setq dist (distance pt3 pt4))
  43. (setq x (fix (/ dist (+ gap1 gap2))))
  44. (setq newpt1 (strcat (rtos gap1 2 2) ",0.0"))
  45. (setq newpt2 (strcat (rtos gap2 2 2) ",0.0"))
  46. (repeat x
  47. (command "copy" "L" "" "0,0" newpt1)
  48. (command "copy" "L" "" "0,0" newpt2)
  49. )
  50. (load "Extrim")
  51. (etrim obj pt1)
  52. (acet-error-restore)
  53. ) ; end defun
  54. (princ)
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 15:58:21 | 显示全部楼层
 
Marko_ribar,谢谢你的帮助,你写的代码几乎就是我需要的,但是线条只绘制在一个规则的区域(矩形)?有可能选择其他类型的区域吗?如图所示,沿着倾角极限的弧。。。我在想一些事情,比如我填充限制后的区域,作为一个“规则”来画线,比如:如果插入起点,可以画线直到限制线,在那里我们得到限制线的交叉点(绿线),可以减少,以创建第一条线的终点,使用半径作为参考,在画完弧之后,再按照“规则”做,直到画完为止,但我不知道这样做是否可行。
 
再次感谢,关于英语的问题,我很抱歉!。。。
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 15:59:17 | 显示全部楼层
 
BIGAL,谢谢,我不知道我是否做错了,但是使用你的代码我只在区域(轮廓)后面创建行,对吗?。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:02:56 | 显示全部楼层
是的,仅使用1条线,但可以有圆弧等
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:06:04 | 显示全部楼层
这个请求让我想起了这个线程——也许这个程序会有所帮助。
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 16:10:37 | 显示全部楼层
 
李几乎是。。。但是,我正在填充一个不规则区域!。。。我正在展示另一幅画来解释它。。。
 
164548daot11solr211v7o.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:13:11 | 显示全部楼层
这是可以解决的,但它不是一个快速的任务,所以我只提供一个李可能能够帮助编写代码的方法
 
根据需要在pline外偏移
以所需的角度和间距创建线(请参见my chevron.lsp)修剪到新的内部柱脚
使用从左到右的线列表,只需交替使用fillet命令top和bottom
 
应该看起来像图像。
回复

使用道具 举报

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 16:16:47 | 显示全部楼层
谢谢比格尔。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 00:30 , Processed in 0.740242 second(s), 86 queries .

© 2020-2025 乐筑天下

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