如何用VBA向CAD发送(entget (car (entsel)) '("*"))命令?
本帖最后由 dong20030432 于 2018-4-10 16:55 编辑用下面的语句提示实时错误13,类型不匹配
acadapp.ActiveDocument.SendCommand "(entget (car (entsel)) '(" * ")) "
请帮忙看下正确方法是什么,谢谢了!发送下面这句可以正常使用,上面的为什么不行呢?
acadapp.ActiveDocument.SendCommand "(entget (car (entsel))) "
"(entget (car (entsel)) '(" * ")) "
你这是让两个字符串相乘!
"(entget (car (entsel)) '("" * "")) " 本帖最后由 dong20030432 于 2018-4-11 08:52 编辑
zzyong00 发表于 2018-4-10 19:02
"(entget (car (entsel)) '(" * ")) "
你这是让两个字符串相乘!
"(entget (car (entsel)) '("" * "")) "
我在命令行直接输入(entget (car (entsel)) '("*")),可以得到对象的扩展数据((-1 . <图元名: 7ee89360>) (0 . "INSERT") (330 . <图元名: 7ee6ecf8>)
(5 . "164") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbBlockReference") (2 . "*U1") (10 415.0 5.0 0.0) (41 . 1.0) (42 . 1.0) (43
. 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0) (-3
("INTECAD_HUST_CAD_CENTER" (1000 . "TITLE") (1002 . "{") (1000 . "type") (1000
. "heada") (1000 . "name") (1000 . "headd") (1000 . "length") (1040 . 180.0)
(1000 . "height") (1040 . 56.0) (1000 . "rightbottompoint") (1011 415.0 5.0
0.0) (1000 . "ceset") (1070 . 0) (1000 . "maintf") (1070 . 1) (1002 . "}")
(1000 . "OBJECT") (1002 . "{") (1000 . "OBJECTID") (1000 . "TITLE") (1002 .
"}") (1000 . "INTECAD") (1002 . "{") (1000 . "VERSION") (1000 . "V60") (1002 .
"}") (1000 . "TITDATA") (1002 . "{") (1000 . "prop1") (1005 . "0") (1000 .
"prop2") (1005 . "0") (1000 . "name") (1005 . "0") (1000 . "code") (1005 . "0")
(1000 . "material") (1005 . "0") (1000 . "totalpaper") (1005 . "0") (1000 .
"no") (1005 . "0") (1000 . "weight") (1005 . "0") (1000 . "scale") (1005 .
"1B5") (1000 . "prop3") (1005 . "0") (1000 . "prop10") (1005 . "0") (1000 .
"prop13") (1005 . "0") (1000 . "prop18") (1005 . "0") (1000 . "prop27") (1005 .
"0") (1000 . "prop4") (1005 . "0") (1000 . "prop12") (1005 . "0") (1000 .
"prop14") (1005 . "0") (1000 . "prop19") (1005 . "0") (1000 . "prop26") (1005 .
"0") (1000 . "prop6") (1005 . "0") (1000 . "prop9") (1005 . "0") (1000 .
"prop17") (1005 . "0") (1000 . "prop22") (1005 . "0") (1000 . "prop25") (1005 .
"0") (1000 . "prop5") (1005 . "0") (1000 . "prop8") (1005 . "0") (1000 .
"prop16") (1005 . "0") (1000 . "prop21") (1005 . "0") (1000 . "prop23") (1005 .
"0") (1000 . "prop7") (1005 . "0") (1000 . "prop11") (1005 . "0") (1000 .
"prop15") (1005 . "0") (1000 . "prop20") (1005 . "0") (1000 . "prop24") (1005 .
"0") (1002 . "}"))))
而在命令行输入(entget (car (entsel)))只能得到下面的信息:
((-1 . <图元名: 7ee89360>) (0 . "INSERT") (330 . <图元名: 7ee6ecf8>)
(5 . "164") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbBlockReference") (2 . "*U1") (10 415.0 5.0 0.0) (41 . 1.0) (42 . 1.0) (43
. 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
我现在是想用VB直接发送第一个命令,让扩展数据在命令行显示出来,但语句好像有错误,不能成功!
那个是英文单引号,可能不是相乘,应该是表示*不是通配符吧?
改为如下即可:
acadapp.ActiveDocument.SendCommand "(entget (car (entsel)) '(" & Chr(34) & " * " & Chr(34) & ")) " yshf 发表于 2018-4-11 14:24
改为如下即可:
acadapp.ActiveDocument.SendCommand "(entget (car (entsel)) '(" & Chr(34) & " * " & C ...
还是不行呀,这样改了以后查询不到扩展数据了,跟(entget (car (entsel)))的结果一样了,请再帮忙看下,谢谢了! 跟(entget (car (entsel)))的结果一样了
说明你选取那个图元没有扩展数据,另选取一个有扩展数据的试一试。 yshf 发表于 2018-4-11 17:49
说明你选取那个图元没有扩展数据,另选取一个有扩展数据的试一试。
我选择的就是有扩展数据的图元呀,同一个图元,在命令行输入(entget (car (entsel)) '("*"))就可以得到扩展数据,用你改的那个代码没获取到。 不好意思,没有细看,改为如下即可(*前后各有一空格,需要删除):
acadapp.ActiveDocument.SendCommand "(entget (car (entsel)) '(" & Chr(34) & "*" & Chr(34) & ")) " yshf 发表于 2018-4-12 11:21
不好意思,没有细看,改为如下即可(*前后各有一空格,需要删除):
acadapp.ActiveDocument.SendCommand " ...
感谢高手!!!确实可以了。
zzyong00 发表于 2018-4-10 19:02
"(entget (car (entsel)) '(" * ")) "
你这是让两个字符串相乘!
"(entget (car (entsel)) '("" * "")) "
非常感谢!你的代码只是*前后各多了一个空格,删除后就能用了。
页:
[1]