尘缘一生 发表于 2024-8-18 12:52:42

插入图块,三种方法,那个最好

如题


;;插入图块----(一级)-----
;;(vla-ins-b "\\ XYZ\\kuai.dwg" '(0 0 0) 1 1 1 0)
(defun vla-ins-b (bname pt xscale yscale zscale rot / mspace)
(if (= (getvar "CTAB") "Model") (setq mspace *Model-Space*) (setq mspace *Paper-Space*))
;(command "-INSERT" bname pt 1 1 0) 插入方法1
;(vla-InsertBlock mspace (vlax-3d-point pt) bname xscale yscale zscale rot)插入方法2
(vlax-invoke mspace 'insertblock pt bname xscale yscale zscale rot) ;插入方法3
(princ)
)

你有种再说一遍 发表于 2024-8-18 17:06:42

本帖最后由 你有种再说一遍 于 2024-8-18 17:17 编辑

第一种是原生arx方式,虽然是command方式.
第二种似乎只是映射arx或者com.
第三种是com接口.
用第二个就好了.

但是这个克隆+插入有一个文字偏移的bug,
文字偏移

解决这个bug需要设置文字样式,再克隆,再切换图纸,粘贴之后再恢复文字样式.

i小小白i 发表于 2024-8-18 13:47:27

一直用第二种

hubeiwdlue 发表于 2024-8-18 15:01:21

用command就挺好。

20060510412 发表于 2024-8-18 16:18:41

方法2与方法3,没啥区别吧,都是vla函数,只是写法的不同而已。

muai2010 发表于 2024-8-18 16:34:20

可以选的话第1和3,第一个常用,第三个短

`中微子 发表于 2024-8-19 00:42:14

还有一种用entmake也可以.

e2002 发表于 2024-8-20 16:39:45

本帖最后由 e2002 于 2024-8-20 16:41 编辑

2和3是相同的。

另外代码中还需要:
   a. 判断布局中的视口对象是否是激活状态;
   b. 对于非平行与WCS的平面,还需要设置 对象的 Normal。
页: [1]
查看完整版本: 插入图块,三种方法,那个最好