Grrr 发表于 2022-7-5 18:25:09

插入类似项

你好
我正在尝试选择一个特定的块并重新插入它。有点像复制命令,但使用块的基点。
问题是我不知道如何获得特定的块:
 
(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一无所知。

Lee Mac 发表于 2022-7-5 18:38:29

也许是这样?
(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)
)
[未经测试]

Tharwat 发表于 2022-7-5 18:41:39

你说的是动态块吗?

Grrr 发表于 2022-7-5 18:53:28

李,成功了!但我有一个简单的问题:
如何更改插入方法(而不是手动输入)我得到了以下点列表:
 
(foreach PT PTS ;;Loop through list of points
 
编辑:Tharwat,只是一个简单的块,但我正在尝试将其插入特定位置。

Lee Mac 发表于 2022-7-5 18:56:30

 
假设“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)
)

Grrr 发表于 2022-7-5 19:05:03

谢谢你,李!

iconeo 发表于 2022-7-5 19:16:40

看看这个。
 
http://www.cadtutor.net/forum/showthread.php?t=92703

rkent 发表于 2022-7-5 19:23:46

ADDSELECTED现在不是内置命令吗?这也会起作用。

Grrr 发表于 2022-7-5 19:27:40

谢谢,iconeo-我已经找到了我正在搜索的内容。
rkent,我只是想看看如何按名称选择一个块,并在lisp函数中使用它,以便稍后可以将其插入点列表中。
 
我发现了一系列不同的插入点LISP,它们将点放置在直线的顶点、端点、中点、交点的选择上(选择不同的实体(直线/柱脚线/连接线/圆…)
但他们都没有在这些参考点上插入块(手动放置块很耗时)
页: [1]
查看完整版本: 插入类似项