Luongshop 发表于 2022-7-5 15:48:02

将对象复制到线条中间

大家好!
我的程序有问题。它运行不稳定。
我希望每个人都能帮助我
 
(defun mid (p1 p2)
(list
   (/ (+ (car p1) (car p2)) 2.0)
   (/ (+ (cadr p1) (cadr p2)) 2.0)
)
)
;______________________________________
(defun c:test ( / ob1 ob2 d0 i j )
(setq ob0 (ssget))
(setq d0 (getpoint))
(setq ob1 (ssget "_:L" '((0 . "LINE"))))
;(setq i (- (sslength ob1) 1))
(repeat (setq i (sslength ob1))
(setq j i)
(setq d1 (cdr (assoc 10 (entget (ssname ob1 (setq i (1- i)))))))
(setq d2 (cdr (assoc 11 (entget (ssname ob1 (setq j (1- j)))))))
(setq mi (mid d1 d2))
(command ".copy" ob0 "" "m" d0 mi "")
)
(princ)
)

Roy_043 发表于 2022-7-5 16:40:14

请阅读以下内容:
http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
 
关于您的问题:
您的问题很可能是由“运行Osnap”设置(OSMODE)引起的。使用命令调用时,此设置可能会影响Lisp程序的结果。
请参阅此处以获取可能的解决方案(“_non”):
http://www.cadtutor.net/forum/showthread.php?102187-Getpoint-does-t-allow-osnap&p=693767&viewfull=1#post693767

BIGAL 发表于 2022-7-5 17:12:38

你也说过你想要pline,所以如果你的pline超过2分,p1 p2可能不会给出正确的mid。我将使用Vla getpointatdist take length/2.0,这将给出一条线的中点和普林线。
页: [1]
查看完整版本: 将对象复制到线条中间