GregGleason 发表于 2022-7-5 15:48:55

找到一个块并将其发送到

我正在尝试捕捉层“0”上的项目。我首先关闭了除“0”之外的所有层,但我还不知道如何编码,所以我手动完成了。我在那个层上只剩下一个物体,它是一个块。我的目标是打开一个区域,捕捉对象并将其发送到另一个层(在本例中,层名称为“FTG IsoCont”)。我已经运行了以下lisp,它无法找到块。
 
有人能提出解决方案吗?
 
; Changes selected objects to Layer from Prompt
; Changes selected objects to Layer FTG-IsoCont
(defun c:SetWinToLayerFTG-IsoCont ()
(if (setq ss1 (ssget "_C" '(0.625 1.95) '(7.15 10.45) '((0 . "FTG-IsoCont"))))
(command "change" ss1 "" "p" "la" "FTG-IsoCont" "")
(alert "No Objects Found")
);; End of if
(princ)
   )
Greg

ronjonp 发表于 2022-7-5 15:55:00

图层名称过滤器需要使用组码8:

(setq ss1 (ssget "_C" '(0.625 1.95) '(7.15 10.45) '((0 . "insert") (8 . "FTG-IsoCont"))))

GregGleason 发表于 2022-7-5 16:01:26

 
谢谢你的代码片段。
 
但遗憾的是,它没有起作用。
 
下面是块的图像和一些属性数据。
 
 
https://www.cadtutor.net/forum/attachment.php?attachmentid=62622&cid=1&stc=1
 
 
格雷格

GregGleason 发表于 2022-7-5 16:04:48

 
谢谢,但代码不起作用。
 
我试过多次运行它,然后重新加载,但它仍然没有动。
 
格雷格

ronjonp 发表于 2022-7-5 16:08:19

测试图纸会有所帮助。

GregGleason 发表于 2022-7-5 16:14:44

 
你能给我发邮件吗?我今天刚加入这个团队,我认为我还没有足够数量的职位需要进行审查。
 
格雷格

ronjonp 发表于 2022-7-5 16:19:04

请仔细阅读您的帖子,如果您想使用ssget选择第0层上的项目,请使用此选项。
(setq ss1 (ssget "_C" '(0.625 1.95) '(7.15 10.45) '((8 . "0"))))
 
无需关闭图层。。这就是ssget过滤器的部分优点。

GregGleason 发表于 2022-7-5 16:24:45

 
那一个也不起作用。
 
我正在尝试上传一个。图纸。
 
格雷格
测验对象图纸

BIGAL 发表于 2022-7-5 16:27:12

为什么你不只是找到所有?你也可以添加(cons 2 Blkname)。对于我来说,选择一个块,获取所有的东西,如名称和图层,然后创建选择集。
 

; Changes selected objects to Layer from Prompt
; Changes selected objects to Layer FTG-IsoCon

(defun c:chglay-0 ( / obj ss lay blkname)
(setq obj (vlax-ename->vla-object (car (entsel "\nPick "))))
(setq lay (vla-get-layer obj))
(if (= (vla-get-ObjectName obj) "AcDbBlockReference")
(progn
(setq blkname (vla-get-name obj))
(setq ss (ssget "x" (list (cons 0 "insert")(cons 8 lay)(cons 2 blkname))))
)
(setq ss (ssget "x" (list (cons 0 "insert")(cons 8 lay))))
)
(command "CHprop" ss "" "la" "0" "")
)

GregGleason 发表于 2022-7-5 16:32:52

 
BIGAL这对我不起作用,至少它是以这种形式编码的。我需要它来自动捕捉特定大小窗口中的对象。主计划将此代码编织到一个更大的例程中,这样当打开图形时,它会自动清理,这样用户就不必提供输入。
 
也许只有几行需要修改?
 
格雷格
页: [1] 2
查看完整版本: 找到一个块并将其发送到