kucha007
发表于 2022-11-19 19:44:40
酷酷提 发表于 2022-11-19 16:33
【【BB】快速建块,并移至0图层.lsp】
是我用过最符合批量建块操作逻辑的插件了
只是感觉命名规则有点乱 ...
块名主要是考虑两个因素:
01-批量建块的时候块名是啥不重要了,只要块名唯一就行了,这也是为了避免跨文件建块产生同名块:lol。使用日期只是因为这个容易得到,而且够唯一,如果这样都有重名块,就加序号后缀。
02-名字不想太长,CAD的对话框也看不全...所以把部分时间变为字母,模拟CAD建匿名块的方式。
aws
发表于 2023-1-2 00:13:50
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(defun K:GetCenter (ss / i obj llp urp ls1 ls2)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (repeat (setq i (sslength ss))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (if (and (vlax-method-applicable-p obj 'getboundingbox)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (setq ls1 (mapcar 'min (vlax-safearray->list llp) (cond (ls1) ((vlax-safearray->list llp))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif ls2 (mapcar 'max (vlax-safearray->list urp) (cond (ls2) ((vlax-safearray->list urp))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif );获取对象最大矩形边界框左下角和右上角的WCS坐标
你好,如果代码只看到这里,这段代码输出的是啥呢?两个点吗?我想生成一个外框矩形,该如何写呢?
我用(command "RECTANG" ls1 ls2) 生成不出一个矩形。
kucha007
发表于 2023-1-4 09:33:55
aws 发表于 2023-1-2 00:13
[*](defun K:GetCenter (ss / i obj llp urp ls1 ls2)
[*] (repeat (setq i (sslength ss))
斜杆后面的变量被清掉了,你在外面调用当然不行了
aws
发表于 2023-1-4 09:57:43
kucha007 发表于 2023-1-4 09:33
斜杆后面的变量被清掉了,你在外面调用当然不行了
你好,我意思呢,是想提取左下角和右上角的两个坐标点,所以就把后面半截省略了,但是代码跑不起来,不知道哪里出了问题
kucha007
发表于 2023-1-4 11:13:08
aws 发表于 2023-1-4 09:57
你好,我意思呢,是想提取左下角和右上角的两个坐标点,所以就把后面半截省略了,但是代码跑不起来,不知 ...
把斜杆后面的lst1和lst2删掉不就行了?
(defun K:GetCenter (ss / i obj llp urp)
(repeat (setq i (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
(if (and (vlax-method-applicable-p obj 'getboundingbox)
(not (vl-catch-all-error-p
(vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp)))
)
)
(setq ls1 (mapcar 'min (vlax-safearray->list llp) (cond (ls1) ((vlax-safearray->list llp))))
ls2 (mapcar 'max (vlax-safearray->list urp) (cond (ls2) ((vlax-safearray->list urp))))
)
)
);获取对象最大矩形边界框左下角和右上角的WCS坐标
)
aws
发表于 2023-1-4 11:39:31
kucha007 发表于 2023-1-4 11:13
把斜杆后面的lst1和lst2删掉不就行了?
天哪,原来是这样,我一直以为那个括号里面的参数,变量,只是起到一个注释的作用。没想到,它在实际影响代码。我全删了,之后就正常了
[*](defun c:ff ()
[*](setq ss(ssget))
[*](repeat (setq n (sslength ss))
[*] (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
[*] (if (and (vlax-method-applicable-p obj 'getboundingbox)
[*] (not (vl-catch-all-error-p
[*] (vl-catch-all-apply 'vla-getboundingbox (list obj 'llp 'urp)))
[*] )
[*] )
[*] (setq ls1 (mapcar 'min (vlax-safearray->list llp) (cond (ls1) ((vlax-safearray->list llp))))
[*] ls2 (mapcar 'max (vlax-safearray->list urp) (cond (ls2) ((vlax-safearray->list urp))))
[*] )
[*] )
[*]);获取对象最大矩形边界框左下角和右上角的WCS坐标
[*](command "RECTANG" ls1 ls2)
[*](princ)
[*])
kucha007
发表于 2023-1-4 11:47:02
本帖最后由 kucha007 于 2023-1-4 11:49 编辑
aws 发表于 2023-1-4 09:57
你好,我意思呢,是想提取左下角和右上角的两个坐标点,所以就把后面半截省略了,但是代码跑不起来,不知 ...
嗯嗯,是的。斜杆后面的变量执行后会清掉
LUX1125
发表于 2023-2-8 20:57:16
能在块里面快速建块吗?
kucha007
发表于 2023-2-9 00:11:36
LUX1125 发表于 2023-2-8 20:57
能在块里面快速建块吗?
块编辑器里面不能用block命令建块。建议你用粘贴为块
sandyvs
发表于 2023-4-13 21:16:18
选择集中心是有什么限制吗?刚开始用好好地,后来不知道怎么回事,位置不对了。然后又换了个别的选择集中心的函数,正常了。。