找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1319|回复: 12

[求助]:如何提取出pline线的坐标

[复制链接]
发表于 2003-7-7 15:19:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何提取出一条闭合的pline线的坐标,形成一个文本文件。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-7-7 15:23:15 | 显示全部楼层
选定多段线——命令“LI”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-7 15:38:14 | 显示全部楼层
有时 li 得到的坐标列表不像上述所列的那样规则。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-7 15:42:28 | 显示全部楼层
给你写个简单的程序,演示。

屏幕上打印出每个顶点的坐标。程序请在晓东工具箱下运行,程序对POLYLINE和LWPOLYLINE都起作用。

  1. [font=courier]
  2. (defun c:getPlVerts (/ e cls p1 num pl)
  3.   (if (setq e (car (xdrx_entsel "\n请选择一条多义线<退出>:" '((0 . "*polyline")))))
  4.     (progn
  5.       (setq cls (xdrx_object_classname e))
  6.       (if (= "POLYLINE" (car cls))
  7.         (progn
  8.           (xdrx_polyline_ConvertFrom e)
  9.           (setq e (entlast))
  10.         )
  11.       )
  12.       (setq num (xdrx_polyline_NumVerts e)
  13.             i -1
  14.       )
  15.       (repeat num
  16.         (setq p1 (xdrx_polyline_getPointAt e (setq i (1+ i)))
  17.               pl (cons p1 pl)
  18.         )
  19.       )
  20.       (princ (reverse pl))
  21.     )
  22.   )
  23. )
  24. [/font]


示例:

  1. [font=courier]
  2. 命令:  GETPLVERTS
  3. 请选择一条多义线<退出>:((38383.4 15577.2 0.0) (45376.7 15577.2 0.0) (45376.7
  4. 8328.85 0.0) (42197.9 8328.85 0.0))((38383.4 15577.2 0.0) (45376.7 15577.2 0.0)
  5. (45376.7 8328.85 0.0) (42197.9 8328.85 0.0))
  6. [/font]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-7 15:47:41 | 显示全部楼层
再请教:
1。POLYLINE 和 LWPOLYLINE有何区别?
2。如何在贴子上贴图?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-7 15:51:13 | 显示全部楼层
最初由 ruansr 发布
[B]再请教:
1。POLYLINE 和 LWPOLYLINE有何区别?
2。如何在贴子上贴图? [/B]


POLYLINE是复杂实体(不单独),有顶点VERTEX组成,LWPOLYLINE是R14后新加的实体,是单独的实体,所有顶点信息都在实体内保存。

具体你看看ACAD的连机帮助。

贴图,你在发贴界面,上传文件里面,选上你硬盘的JPG,GIF,DWF等等,就贴到论坛来了,和传普通的ZIP,RAR文件等没有区别。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-7 15:57:55 | 显示全部楼层
我在第二贴中用上传附件的方法贴的图为什么没有像cdhua001贴的图那样直接显示出来呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-7 16:02:59 | 显示全部楼层
最初由 ruansr 发布
[B]我在第二贴中用上传附件的方法贴的图为什么没有像cdhua001贴的图那样直接显示出来呢? [/B]


你要点上传附件旁边的“浏览”,去选你硬盘的JPG,GIF等文件。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-7 16:34:11 | 显示全部楼层
用上述方法得到的坐标表还是不整齐,不利于打印输出,最好能做成以下格式:
x1,y1
x2,y2
...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-7 17:34:33 | 显示全部楼层
VBA

  1.   [FONT=courier new]
  2. Sub getPLPoints()
  3.     Dim reObj As AcadObject
  4.     Dim reobj1 As AcadPolyline
  5.     Dim basePoint As Variant
  6.     Dim curPoint As Variant
  7.     'Dim totalPoints As Long
  8.    
  9.     ThisDrawing.Utility.GetEntity reObj, basePoint, "please select a polyline: "
  10.     If reObj.ObjectName = "AcDbPolyline" Then
  11.         curPoint = reObj.Coordinates
  12.         A = UBound(curPoint)
  13.         
  14.         For I = 0 To A - 1 Step 2
  15.             Debug.Print "POINT" + Str((I + 2) / 2) + ":  X=" + Str(curPoint(I)) + "  ,   Y=" + Str(curPoint(I + 1))
  16.         Next
  17.         
  18.     End If
  19.    
  20. End Sub

  21.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-8 09:50:27 | 显示全部楼层
如何使用上面的VBA程序呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-17 09:58:01 | 显示全部楼层
;取多义线端点坐标
(defun c:plid ()
       (setq name (getstring "\n File name:"))
       (setq ent_b (entget (ssname (ssget) 0)))
       (setq ffile (open name "w"))
       (setq ent_pb (assoc 10 ent_b))
       (while (/= ent_pb nil)
          (progn
              (setq px (nth 1 ent_pb))
              (setq py (nth 2 ent_pb))
              (setq pxx (rtos px 2 6))
              (setq pyy (rtos py 2 6))
              (setq dataxy (strcat pxx " " pyy))
              (write-line dataxy ffile)
              (setq newlt (list px py))
              (setq ent_b (subst (cons 1 newlt) (assoc 10 ent_b) ent_b))
              (setq ent_pb (assoc 10 ent_b))   
         )
      )
      (close ffile)
      (princ)
)
(prompt "...loaded. --- 金鑫土木 ----   2004.2.22 ------  ")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-19 10:01:24 | 显示全部楼层
没学过编程,以后网站开了编程学习班的时候我去学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-11 23:48 , Processed in 0.200176 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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