明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5137|回复: 7

如何获取多义线的端点坐标

[复制链接]
发表于 2005-5-26 09:15:00 | 显示全部楼层 |阅读模式
在纯vlisp环境里,如何获取多义线(LWPOLYLINE)的两端点及各节点坐标呢?
发表于 2005-5-27 08:21:00 | 显示全部楼层
(setq sel-one (car (entsel)); 选取对象
spt (vlax-curve-getstartpoint sel-one);对象的起点
ept (vlax-curve-getendpoint a));对象的终点
回复 支持 1 反对 0

使用道具 举报

发表于 2005-5-26 20:31:00 | 显示全部楼层
(DEFUN C:XX (/ E1 DXF XY )
(SETQ E1 (CAR (ENTSEL)))
(SETQ E1 (ENTNEXT E1))
(SETQ DXF (ENTGET E1))

(while (= (cdr (assoc 0 dxf)) "VERTEX")
(setq XY (cdr (assoc 10 dxf)))
(COMMAND "POINT" XY)
(SETQ E1 (ENTNEXT E1))
(SETQ DXF (ENTGET E1))
)
)
发表于 2005-5-28 00:46:00 | 显示全部楼层
vlax-curve-getpointatparam


vla-get-coordinate (Lwpolyline Object        Property)
发表于 2005-5-28 08:49:00 | 显示全部楼层
我帮楼上的再帖得更全一些吧! 功能取得对象顶点的坐标: vla-get-Coordinate
语法 (vla-get-Coordinate Object index)
Object MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/3DPolyline%20对象.htm" target="_blank" >3DPoly, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Leader%20对象.htm" target="_blank" >Leader, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Point%20对象.htm" target="_blank" >Point,
MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/PolyfaceMesh%20对象.htm" target="_blank" >PolyfaceMesh, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/PolygonMesh%20对象.htm" target="_blank" >PolygonMesh, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >Polyline, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Solid%20对象.htm" target="_blank" >Solid, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Trace%20对象.htm" target="_blank" >Trace
这个属性适用的对象。
Coordinate 变体(双精度的三元素或二元素数组);读/写
指定的顶点的X、Y与Z坐标值的数组。
MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline对象:具有两个元素的变体,表示OCS中
的X与Y坐标值。
MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >Polyline对象:具有三个元素的变体,代表OCS的X与Y坐标值。
Z坐标以变体表示但被忽略。
所有其它对象:变体具有三个元素,代表WCS的X与Y坐标,Z坐
标在当前的UCS上将默认为0
index 整数
顶点数组中要设定或查询的顶点的索引。
顶点数组是以0为基底。







 

 

 

说明
这个属性会置换指定对象的任何已有的顶点。可使用标准的数组处理方法来处理这个
属性包含的值。
3DPoly, Polyline, PolygonMesh:如果是简单多段线(不是样条曲线或曲线拟合),
这个属性指定简单顶点。如果是样条曲线或曲面拟合多段线,这个属性指定顶点的控制点。
MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm" target="_blank" >PolylineMSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightweightPolyline%20对象.htm" target="_blank" >LightweightPolyline对象的OCS坐标值可使用MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/TranslateCoordinates%20方法.htm" target="_blank" >TranslateCoordinates方法
转换成其它坐标系统,或从其它坐标系统转换为OCS坐标值。


范例

(defun Example_Coordinate()

;;; 这个范例在模型空间中建立一条Polyline,接着
;;; 查询与改变第一个索引位置的坐标

(VL-LOAD-COM)

(setq AcadObject(vlax-get-acad-object)

AcadDocument(vla-get-ActiveDocument Acadobject)

mSpace(vla-get-ModelSpace Acaddocument)

)

;;; 定义 2D 多段线的点

(setq pnts(vlax-make-safearray vlax-vbDouble '(0 . 14)))

(vlax-safearray-fill pnts '(10 10 0 10 20 0 20 20 0 30 20 0 40 40 0))

;;; 在模型空间中建立一个轻Polyline对象

(setq PolylineObj(vla-AddPolyline mSpace pnts))

(vla-ZoomExtents AcadObject)

;;; 找出第一个索引位置的坐标

(setq coord(vla-get-Coordinate PolylineObj 0))

(princ (STRCAT "多义线的第一个索引位置的坐标是:" (rtos (vlax-safearray-get-element (vlax-variant-value coord) 0))

"," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 1))

"," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 2)) "\n"

     )

 )

(PROMPT "<Enter>进行:")(VL-CMDF pause)

;;; 改变坐标

(setq temp(+ (vlax-safearray-get-element (vlax-variant-value coord) 0) 1))

(setq coord(vlax-variant-value coord))

(vlax-safearray-put-element coord 0 temp)

(vla-put-Coordinate PolylineObj 0 coord)

(vla-Update PolylineObj)

;;; 查询新的坐标

(setq coord(vla-get-Coordinate PolylineObj 0))

(princ (STRCAT "多义线的第一个索引位置的坐标当前是:" (rtos (vlax-safearray-get-element (vlax-variant-value coord) 0))

"," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 1))

"," (rtos (vlax-safearray-get-element (vlax-variant-value coord) 2))

     )

 )

(princ)

)

发表于 2011-8-23 20:34:58 | 显示全部楼层
今天又学到不少东东
发表于 2018-5-23 17:16:18 | 显示全部楼层
BDYCAD 发表于 2005-5-27 08:21
(setq sel-one (car (entsel)); 选取对象                                         spt (vlax-curve-getstartpoint sel-one);对象的起点                                         e ...

试了半天,发现自己少了一个car。
发表于 2018-8-5 02:33:16 | 显示全部楼层
学习了,谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 08:38 , Processed in 0.248136 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表