jan_ek 发表于 2022-7-6 10:05:23

Lisp复制

嘿,我想写一些像这样的东西:
复制图层WA1上的多段线
(右侧15000份)
然后添加以选择复制的对象(最好作为列表)
每次复制后都会变换区域。
我试着用“ssget”X做点什么,但不知怎么的,这并没有成功
帮助:)

Michaels 发表于 2022-7-6 10:12:08

15000份副本,无疑可能会使Autocad程序崩溃。

ReMark 发表于 2022-7-6 10:17:51

15000份肯定很多。这些是闭合多段线吗?我问你是因为你提到要改造它们(15000份?)进入区域。
 
你在画什么?你能举一个例子来说明你想从什么开始,以及你想让成品看起来像什么吗?每个示例一个就足够了。谢谢

jan_ek 发表于 2022-7-6 10:24:11

可能写得不好。
这是向15000个单元的右移
 
(setq en(ssget“_x”)
(列表
(cons 0“LW多段线”)
(cons 8(strcat“WARSTWA1”“*”))
)
)
 
(命令“.u copy“en”“m”“0,0,0”“50000,0,0”“E”)

ReMark 发表于 2022-7-6 10:33:41

15000件?公制还是英制?
 
移动中的移动?看起来您使用的是“复制”命令,而不是“移动”命令。
 
对不起,我还是没听懂。
 
那么使用区域呢?这从哪里来?

Michaels 发表于 2022-7-6 10:38:00

可能是这样的。。。。
 

(setq ss (ssget "_x" '((0 . "LWPOLYLINE")(cons 8 (strcat "XXX" "*")))))
(command "_.copy" ss "" '(0. 0. 0.) (polar '(0. 0. 0.) 0.0 15000.))

jan_ek 发表于 2022-7-6 10:46:04

语言问题:)
是的,我想这样做:
我强调xxx层上的所有多段线。
我有一个变量列表(选定的多段线)。
每个元素的副本右侧15000 mm。
复制的项变换区域并添加到列表(变量)。
此列表中的每个项目都按顺序垂直于模型拉伸(挤出)(solid 3d)500 mm

Lee Mac 发表于 2022-7-6 10:51:02


 

(defun c:test ( / doc spc ss n r ) (vl-load-com)
;; Example by Lee Mac 2010www.lee-mac.com

(setq spc
   (vlax-get-property (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
   (if (= 1 (getvar 'CVPORT)) 'PaperSpace 'ModelSpace)
   )
)

(if (ssget "_X" '((0 . "LWPOLYLINE") (8 . "XXX*")))
   (progn
   (vlax-for o (setq ss (vla-get-ActiveSelectionSet doc))
       (vla-move (setq n (vla-copy o))
         (vlax-3D-point '(0. 0. 0.)) (vlax-3D-point '(15000. 0. 0.))
       )
       (vla-put-closed n :vlax-true)
       (vla-AddExtrudedSolid spc (car (setq r (vlax-invoke spc 'AddRegion (list n)))) 500. 0.)
       (vla-delete n)
       (mapcar 'vla-delete r)
   )
   (vla-delete ss)
   )
   (princ "\n** No LWPolylines Found **")
)
(princ)
)

jan_ek 发表于 2022-7-6 10:53:55

谢谢,就这样。这里有很多,“vla”。您必须进行一点培训才能理解代码。非常感谢你。也许还有一个问题:
什么命令可以添加或剪切三维实体

jan_ek 发表于 2022-7-6 11:00:27

添加到已创建形状的列表中。
我的意思是以后可以诉诸变量的某个地方。
例如,对象X旋转90度
 
成立后该地区如何搬迁
页: [1] 2
查看完整版本: Lisp复制