ksperopoulos 发表于 2022-7-6 00:28:34

当我这样做的时候,我不断地得到一个糟糕的参数错误。我做错了什么?
 
(defun c:mepelev ( / vlaobj)
(vl-load-com)
(setq vlaobj (vlax-ename->vla-object (car (entsel))))
(vlax-get-property vlaobj 'points)
(command "mleader" pause pause vlaobj)
(princ)
)

pBe 发表于 2022-7-6 00:31:35

 
您选择的实体类型是什么,
我对这件事不知所措
(vlax-get-property vlaobj 'points)
 
什么vla对象具有“点”属性?
 
为了回答您的问题,您没有提供有效的值作为参数。在这种情况下,VLA-OBJECT
 
假设此行返回一个列表
(vlax-get-property vlaobj 'points)
 
然后,只要将其赋给变量名或直接赋给命令表达式,就可以将其用作有效参数
 
(setq value (vlax-get vlaobj 'points))
(command "mleader" pause pause value)
 

 
(command "mleader" pause pause(vlax-get vlaobj 'points))

ksperopoulos 发表于 2022-7-6 00:37:22

图形中的对象是来自在AutoCad上运行的垂直产品(称为制造CADmep)的管道。
 
 
我很抱歉,因为我不能百分之百确定我在寻找什么“价值”。你是说如果我用vlaobj替换vla对象,它可能会工作吗?

hmsilva 发表于 2022-7-6 00:40:22

Kyle,
作为YMG3岗位,
(vlax-dump-object (vlax-ename->vla-object (car (entsel))))
这会带来什么回报?
复制该代码并粘贴到您的命令行,选择您的一个管道,然后按F2,复制/粘贴结果,这样我们就可以看到可用的属性。。。
 
亨里克

ksperopoulos 发表于 2022-7-6 00:41:14

 
这是我得到的

Bhull1985 发表于 2022-7-6 00:44:18

我的2美分。。。
除非有问题的块具有静态名称,否则您需要设计一种能够选择正确块的方法。
少点击当然很好,但有时一次点击比几百行代码(夸张)要好,但重点仍然是。
(get)函数、块名、filedia,我相信还有一些方法可以选择程序中的项目。
使用lisp的自动化部分,自动并通过0次单击绘制包含所需信息的多重引线。简单地选择一个区块对于工作场所来说并不太可怕,因为一个程序因为获得了选择而做了很多事情。。。。

hmsilva 发表于 2022-7-6 00:47:33

Kyle,
正如pBe所说,
 

(defun c:mepelev ( / vlaobj)
(vl-load-com)
(setq vlaobj (vlax-ename->vla-object (car (entsel))))
(command "mleader" pause pause(vlax-get vlaobj 'points))
(princ)
)
 
亨里克

ksperopoulos 发表于 2022-7-6 00:50:44

亨里克-谢谢你。这似乎现在起作用了。我现在要做的就是从这里解析z提升。在查看了你贴在我旁边的代码后,看起来我把它放错地方了:
 
(vlax-get-property vlaobj 'points)

hmsilva 发表于 2022-7-6 00:54:06

不用谢,凯尔
但是所有的学分都将被YMG3和pBe获得!
 
亨里克

ksperopoulos 发表于 2022-7-6 00:57:49

你说得对。对不起,我没有提到他们。谢谢大家帮助我!
页: 1 [2]
查看完整版本: 基于位置获取Z值