插入类似项
你好我正在尝试选择一个特定的块并重新插入它。有点像复制命令,但使用块的基点。
问题是我不知道如何获得特定的块:
(defun c:InsertSimilar (/ en inspt1 )
(setq en(car (entsel "\n Select a block :")))
(setq enlist(entget en))
(setq inspt1 (getpoint "\nPick Insertion point: "))
(command "_insert" en inspt1 "" "" "")
(princ)
)
我试着把它和李的代码中的这一部分混合在一起:
;;---------------------------------------------;;
;; Example © Lee Mac 2011-www.lee-mac.com;;
;;---------------------------------------------;;
(setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))
acblk (vla-get-Blocks acdoc)
)
(if (ssget '((0 . "INSERT")))
(progn
(vlax-for block (setq acsel (vla-get-ActiveSelectionSet acdoc))
(if
(not
(member
(setq name
(vlax-get-property block
(if (vlax-property-available-p block 'effectivename)
'effectivename
'name
)
)
)
done
)
)
但是,没有任何成功-因为我对lisp了解很少,对vlisp一无所知。 也许是这样?
(defun c:cb ( / blk )
(if (setq blk (ssget "_+.:E:S" '((0 . "INSERT"))))
(progn
(setq blk (ssname blk 0))
(command "_.copy" blk "" "_non" (trans (cdr (assoc 10 (entget blk))) blk 1))
(while (= 1 (logand 1 (getvar 'cmdactive))) (command "\\"))
)
)
(princ)
)
[未经测试] 你说的是动态块吗? 李,成功了!但我有一个简单的问题:
如何更改插入方法(而不是手动输入)我得到了以下点列表:
(foreach PT PTS ;;Loop through list of points
编辑:Tharwat,只是一个简单的块,但我正在尝试将其插入特定位置。
假设“pts”是一个有效的点列表,一个非常简单的方法是:
(defun c:cb ( / blk ins )
(if (setq blk (ssget "_+.:E:S" '((0 . "INSERT"))))
(progn
(setq blk (ssname blk 0)
ins (trans (cdr (assoc 10 (entget blk))) blk 1)
)
(foreach x pts (command "_.copy" blk "" "_non" ins "_non" x))
)
)
(princ)
) 谢谢你,李! 看看这个。
http://www.cadtutor.net/forum/showthread.php?t=92703 ADDSELECTED现在不是内置命令吗?这也会起作用。 谢谢,iconeo-我已经找到了我正在搜索的内容。
rkent,我只是想看看如何按名称选择一个块,并在lisp函数中使用它,以便稍后可以将其插入点列表中。
我发现了一系列不同的插入点LISP,它们将点放置在直线的顶点、端点、中点、交点的选择上(选择不同的实体(直线/柱脚线/连接线/圆…)
但他们都没有在这些参考点上插入块(手动放置块很耗时)
页:
[1]