拾取时拾取点
有人能告诉我我做错了什么吗?此例程用于在指定的方向上使用不同的偏移值重复偏移拾取的图元。前4-5个偏移是可以的。但它抵消了一个错误的实体。。。
(defun c:QO( / PickedEnt pt0 Ent OSM
OffsetTowards Ang i pt2 OffsetVal)
(setq PickedEnt (entsel "\nPick Ent:"))
(setq pt0 (cadr PickedEnt))
(setq Ent (car PickedEnt))
(setq OSM (getvar "OSMODE"))
(setvar "osmode" 0)
(setq OffsetTowards (getpoint pt0 "\nPick direction to offset:"))
(setq Ang (angle pt0 OffsetTowards))
(setq i 1)
(While (> i 0)
(setq pt2 (polar pt0 ang 100000000))
(setq OffsetVal (getreal "\nOffset Distance:"))
(command "_Offset" OffsetVal Ent pt2 "")
(setq Ent (entlast))
(setq pt0 pt2)
(setq i (1+ i))
)
)
(defun *error* (errmsg)
(princ errmsg)
(princ)
(if (not (eq OSM nil))(setvar "OSMODE" OSM))
) (setq pt2(极性pt0和100000000))
我建议您使用选定的第一个实体作为每个偏移的基础,并记录您输入的每个距离,为OffsetVal变量添加总值+新值,这样,方向仍将来自原始实体,无需重新分配pt2的值,只需将偏移距离增加总值+新值,无需使用entlast
一个简单的代码应该是这样的
(defun c:test (/ PickedEnt pt0 i)
(setq PickedEnt (entsel "\nPick Ent:"))
(setq pt0 (cadr PickedEnt))
(setq pt0 ( getpointpt0 "\nPick direction to offset:"))
(setq i 0)
(while
(setq OffsetVal (getreal "\nOffset Distance:"))
(setq OffsetVal (+ i OffsetVal))
(command "_Offset" OffsetVal PickedEnt pt0 "")
(setq i OffsetVal)
)
(princ)
)
HTH公司 谢谢pBe,我会试试的。。!! 我在你建议pBe时修改了它,
不,它很好用。。。给你。。
(defun c:QO( / PickedEnt pt0 Ent OSM
OffsetTowards Ang i pt2 OffsetVal)
(setq PickedEnt (entsel "\nPick Ent:"))
(setq pt0 (cadr PickedEnt))
(setq Ent (car PickedEnt))
(setq OSM (getvar "OSMODE"))
(setvar "osmode" 0)
(setq OffsetTowards (getpoint pt0 "\nPick direction to offset:"))
(setq Ang (angle pt0 OffsetTowards))
(setq OffsetVal 0)
(setq i 1)
(While (> i 0)
(setq OffsetVal (+ OffsetVal (getreal "\nOffset Distance:")))
(setq pt2 (polar pt0 ang OffsetVal))
(command "_Offset" OffsetVal Ent pt2 "")
(setq i (1+ i))
)
)
(defun *error* (errmsg)
(princ errmsg)
(princ)
(if (not (eq OSM nil))(setvar "OSMODE" OSM))
) 看看我发布的harilalmn示例代码 另一种选择:
Command: EXOFFSET
Settings: Distance = Through,Layer = SOURCE, Gaptype = Normal
Specify offset distance or [Through] <Through>:
Select object(s) to offset or :
1 object(s) found.
Shift+Pick for multiple; Ctrl+Pick to erase source object.
Specify through point or [Multiple/Options/Undo]: 谢谢李。。。。!!
页:
[1]