harilalmn 发表于 2022-7-6 08:51:58

拾取时拾取点

有人能告诉我我做错了什么吗?
此例程用于在指定的方向上使用不同的偏移值重复偏移拾取的图元。前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))
)

pBe 发表于 2022-7-6 09:05:43

(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公司

harilalmn 发表于 2022-7-6 09:15:21

谢谢pBe,我会试试的。。!!

harilalmn 发表于 2022-7-6 09:29:23

我在你建议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))
)

pBe 发表于 2022-7-6 09:38:13

看看我发布的harilalmn示例代码

Lee Mac 发表于 2022-7-6 09:45:45

另一种选择:
 
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]:

harilalmn 发表于 2022-7-6 09:53:01

谢谢李。。。。!!
页: [1]
查看完整版本: 拾取时拾取点