查找块插入点
您好,我需要一个lisp-rutine,可以找到一个块(绘图头)插入点,并在同一点插入另一个块。我不认为这可能是一个长口吃。我在网上到处找了找。我还看到了一个最近的lisp-rutine,用户必须选择块以用户选择或给定的角度旋转块。我需要一些思考,可以找到块插入点,只需寻找块名,并在第一个块的相同插入点插入另一个块。Thx i前进。 查找SSGET帮助它允许“过滤器”基本上使用过滤器搜索所有块并返回名为xyz的块
执行(setq ans(entsel))选择块,然后(entget(car ans))您现在将看到所有已知的dxf代码,您需要使用(0。“插入”)和(2。“您的块名”)也可能是(410。“布局1”)当前布局,提示还可以尝试“模型”。插入点在我拾取的块中为(10 0.0 0.0 0.0),
(setq ans (entsel))
(setq en (entget (car ans)))
(setq inspt (cdr (assoc 10 en)))
(princ inspt)
; (car inspt) is X
; (cadr inspt) is Y
;(caddr inspt) is Z
;(ssget "X"(0 . "INSERT")(2 . "your blockname"))
;warning if more than once will return all
我这个程序我需要选择一个块,它返回一个插入点。我要搜索的是一个rutine,它根据特定的块名称查找块,并找到这个块插入点这个插入点它必须用来插入另一个块,而不是第一个块。
我读过jefferypsanders的SSGET。com,还有关于过滤器,但据我所知,我必须使用SSGET“X”并过滤掉块名,但当它可以过滤掉的唯一名称是层名时,这怎么可能呢?
我有大约3公斤的画,我有一个“竣工”的标志,这就是为什么我问,并希望我可以在脚本批使用芦丁。
提前谢谢你。
埃尔弗特
我环顾了一下afralisp,发现它可能是我问题的解决方案,但我无法让它正常工作,也许有人能帮我。
我试图让程序返回我告诉它的块名称的插入点。但我犯了一个错误;错误:功能错误:(2.“dwg”);dwg是我的测试块名称。
任何帮助都感谢。。。thx提前。。。。一个人怎么会犯错误。。。埃尔弗特! 如果图形中只有一个块实例,这将为您提供其插入点:
(defun c:asbuilt2 (/ a b c)
(setq a (ssget "_X" '((0 . "INSERT") (2 . "block-name")))
b (sslength a)
)
(repeat b
(setq b (1- b)
c (append c (cdr (assoc 10 (entget (ssname a b)))))
)
)
(princ c)
(princ)
)
如果有多个插入点,它将列出所有插入点。
Thx做到了。我已经完成了这个计划。非常感谢你。我将尝试对其进行微调,然后稍后发布。 给你!还是Lisp程序员的新手。。。。。。 埃尔弗特,
确保考虑ANS=nil(在C:Asbuilt1中)或A=nil(在C:asbuilt2中)的可能性。
也许IF语句可以帮助您缓解潜在错误-例如:
(defun c:FOO(/ ss)
(if (and (setq ss (ssget ":S:E" '((0 . "INSERT"))))
(findfile "ASBUILT.dwg"))
(command "._-insert"
"ASBUILT"
(cdr (assoc 10 (entget (ssname ss 0))))
1.0
1.0
0.0)
(cond (ss (prompt "\n** \"ASBUILT.dwg\" cannot be found ** "))
((prompt "\n** Nothing selected ** "))))
(princ))
**编辑添加-我个人尝试在插入块时明确定义比例和旋转,以避免潜在的错误。
HTH公司 谢谢。我会调查的。我会尽快发布一个新的代码来考虑。 不客气。。。我很高兴你发现我的帖子很有用。
页:
[1]
2