简单lisp例程帮助-Mea
大家好。我试着为一个重复的过程组装一个autolisp,这个过程将给我们的办公室带来麻烦,但在这个阶段我只是不知道如何让它工作。
我们基本上需要使用“measure”命令在(许多)多条多段线上每隔20m插入一个块。
有人能建议或给出这样做的示例代码吗?
基本上选择measure命令,允许我选择多段线(或者选择多条多段线,那会更好!),选择块选项,输入块名称(现在称为Block1),确认Y与多段线对齐,然后自动指定20m间隔。
感谢您的帮助! 看看这个,伙计。
(defun c:TesT (/ blk ss l name)
; TharwaT 04. 04. 2011
(if
(and (setq blk (entsel "\n Select Block :"))
(setq ss (ssget "_:L" '((0 . "LINE,SPLINE,LWPOLYLINE,POLYLINE"))))
(setq l (getdist "\n Distance between Blocks :"))
)
(progn
(setq name (cdr (assoc 2 (entget (car blk)))))
((lambda (i / ss1)
(while
(setq ss1 (ssname ss (setq i (1+ i))))
(command "_.measure" ss1 "Block" name "_Y" l)
)
)
-1
)
)
(princ)
)
(princ)
)
塔瓦特 完美的非常感谢 不客气,凯尔森。
塔瓦特
这太棒了!如何进行修改以在插入选定块时更改其比例?
谢谢Steveo
非常感谢。
我猜你不能缩放将沿所选线分布的块,因为命令度量将
按块的名称而不是选定对象插入块。
也许有人会对这个事实提出异议。
塔瓦特 在测量每个对象之前,您需要使用vlax curve getPointAtDist(请参阅我的CopyAlongCurve.LSP)滚动自己的对象,或存储最后一个实体(entlast),然后在测量完曲线后,使用entnext选择每个新创建的对象(块)并根据最初选择的块的比例特性重新缩放。 史蒂夫
试试这个稍微编辑过的代码
(defun c:TesT2 (/ blk ss l name)
; TharwaT 04. 04. 2011
(if
(and (setq blk (entsel "\n Select Block :"))
(setq ss (ssget "_:L" '((0 . "LINE,SPLINE,LWPOLYLINE,POLYLINE"))))
(setq l (getdist "\n Distance between Blocks :"))
(setq scl (getdist "\n Enter a scale :"))
)
(progn
(setq name (cdr (assoc 2 (entget (car blk)))))
((lambda (i / ss1)
(while
(setq ss1 (ssname ss (setq i (1+ i))))
(setq marker(entlast))
(command "_.measure" ss1 "Block" name "_Y" l)
(while (setq en (entnext marker))
(setq elist (entget en)
pt (cdr (assoc 10 elist)))
(command "_scale" en "" "_non" pt scl)
(princ (cdr (assoc 2 elist)))
(entupd en)
(setq marker en)
)
)
)
-1
)
)
(princ)
)
(princ)
)
~'J'~
fixo!!!你做到了!!谢谢,史蒂夫 史提夫,
不客气
但多亏了塔瓦
干杯,朋友
奥列格
页:
[1]
2