AutoCAD VBA中如何获得一条多段线上所有顶点坐标

作者&投稿:戢波 (若有异议请与网页底部的电邮联系)
如何获取CAD多段线各顶点坐标~



这是我自己画的多线段,图中红色的为第一点,左下角的坐标100,100.
下面还有一张,看下应该就懂了


选中你画的多线段,然后把鼠标选中你要的点,那个点就变成红色了,然后左下角就会有相应的坐标出现
下面在介绍一种方法,比较麻烦,但是有时候会好用点
看下面这个图


选中你画的直线,然后右键,选快速计算机,选交叉的那个图标


然后选四个点,这四个点要是两两一条直线,交点是你要的点,就可以出现交点坐标了

;你说的三维多义线是指"POLYLINE"实体吧,3p命令绘制的线
(defun c:test ( / a aa bb cc e eg en et n p p0 ps s x y z)
(setq a (ssget '((0 . "polyline"))))
(setq aa (dxfcod -1 a))
(foreach p aa
(setq e (cdr p))
(setq en (entnext e))
(setq eg (entget en))
(setq p (cdr (assoc 10 eg))
p0 p
)
(setq x (car p))
(setq y (cadr p))
(setq z (caddr p))
(setq p (list x y z))
(setq ps p)
(setq bb '(nil))
(setq bb (cons p bb))
(setq cc nil)
(setq cc (cons p cc))
(setq n 1)
(setq et "VERTEX")
(while (= et "VERTEX")
(setq e en)
(setq en (entnext e))
(setq eg (entget en))
(setq et (cdr (assoc 0 eg)))
(if (= et "VERTEX")
(progn
(setq p (cdr (assoc 10 eg)))
(setq n (+ n 1))
(setq x (car p))
(setq y (cadr p))
(setq z (caddr p))
(setq p (list x y z))
(setq s (distance ps p))
(if (> s 0)
(progn
(setq bb (cons p bb))
(setq ps p)
)
)
)
)
)
(print bb)
)
)
(defun dxfcod (numbe ssent / vl len k ai g dxfvl) ; 参数1:dxf组码 参数2:选择集。返回对应选择集的dxf组码表
(setq vl '())
(if ssent
(progn
(setq len (sslength ssent)
k 0
)
(repeat len
(setq ai (ssname ssent k)
k (1+ k)
)
(setq g (entget ai))
(setq dxfvl (assoc numbe g))
(setq vl (append
vl
(list dxfvl)
)
)
)
)
(setq vl nil)
)
(setq vl vl)
)

有个函数,getattributes

Coordinates


东坡区13432583684: 在CAD中使用VBA如何获取自定义实体中的信息 -
包妍盐酸: 基本上有二种方法:1、将属性值传至本地电脑磁盘中,必要时程序根据实体句柄来访问它.2、在建模过程中,将属性值以数据扩展方式或词典扩展方式随文件一起保存,必要时让程序访问它.如果仅开发宏以自用,建议使用第一种方法.如果开发软件,以第二种方法为妥.另外,也可以使用其它方法取得在创建时没有记录属性的实体的信息,如设计院给的体育场桁架设计图是光头光脑的,没有相贯口等结点,也没有任何扩展属性,如果要手动做出相贯口来是十分不便的.

东坡区13432583684: 在VBA 如何获取AUTOCAD中图块的位置坐标 -
包妍盐酸: 在VBA中,可以使用如下语句获得坐标位置: Private Sub GetBlocksCoord()Dim BlockObj As AcadBlockFor Each BlockObj In ThisDrawing.Blocks '在当前图形中查找所有块Debug.Print BlockObj.Origin(0), BlockObj.Origin(1) '获取坐标Next Set BlockObj = Nothing '销毁变量 End Sub把这段命令保存为VBA文件,在菜单工具-->Autolisp-->加载该文件.

东坡区13432583684: CAD中VBA如何选取轴线获得轴线编号 -
包妍盐酸: 可以实现,先判断直线的端点坐标,然后将寻找与端点坐标最接近的文字,即是对应的编号.

东坡区13432583684: autocad vba怎么获取acadmtext中的每一行 -
包妍盐酸: 写了一个autolisp程序,参考一下,代码如下:(defun c:tes () (setvar "cmdecho" 0) (setvar "blipmode" 0) (if (null vlax-dump-object) (vl-load-com) ) (setq ent (car (entsel "\n请选择文字"))) (setq tr1 (vla-get-TextString (vlax-ename->vla-...

东坡区13432583684: 求教CAD用VBA二次开发怎样得到一个图块自定义属性的问题. -
包妍盐酸: 用录制宏的功能,看你手动改变cad本身图块时候生成的vba是什么样子的,照着写就行了.

东坡区13432583684: 如何用VBA获取CAD中块的插入点
包妍盐酸: 在CAD中直接输入LIST后再在图中选择你要知道的块,再确定就显示一个图框,你需要的信息就都出现了!

东坡区13432583684: AutoCAD:VBA怎么取一条直线的两个端点?! -
包妍盐酸: '新建一个CAD文件,画一条直线,下面的代码 Pt1, Pt2 分别取得直线的起点和终点:dim obj As AcadLine Dim Pt1, Pt2 set obj = Thisdrawing.ModelSpace(0) Pt1 = obj.StartPoint Pt2 = obj.EndPoint'如果是多义线,新建一个CAD文件,画一条多...

东坡区13432583684: cad vba 如何获取文字的坐标和内容! -
包妍盐酸: dim obj1 as AcadText dim a(2),b(2) as double dim b as integer dim d as string obj1=........with obj1 a=.InsectionPoint b=.TextAlignmentPoint c=.Alignment d=.TextString end with 大体应该这么写吧

东坡区13432583684: [VBA]如何获得CAD命令行的返回值? -
包妍盐酸: Sub Example_GetVariable() ' This example finds the current setting of the ' system variable FILLMODE. Dim sysVarName As String Dim varData As Variant sysVarName = "lastprompt" varData = ThisDrawing.GetVariable(sysVarName) MsgBox sysVarName & " = " & varData, , "GetVariable Example" End Sub 有一行是可以得到的.如果输出有两行,不知道如何得到了.

东坡区13432583684: CAD的VBA如何获取像“文字样式“对话框中“字体名”下拉菜单中的可用字体名? 谢谢了!!! -
包妍盐酸: 新建工程任意注记,把注记字体改为你所需的字体,复制到现用里,这样工程里就出现了这个字体

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网