找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1552|回复: 9

[LISP程序]:关于lp线和pl线的问题

[复制链接]
发表于 2006-3-17 17:09:12 | 显示全部楼层 |阅读模式

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

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

×
我是刚接触cad,到前天才知道原来还有什么优化多段线的是说法,以前要提个什么坐标之类的用entget再assoc 10 就行了,现在出了个pl线就把我搞晕了,assoc返回的数据为(10 0.0 0.0 0.0).而且明明是一条多段线,很多节点却只有一个这样的元素在里面
请问有什么方法提取这种线里的坐标吗

还有提取一个多段线里的坐标数据有什么简单方法吗?我都是一个一个提出来再判断是不是10开头的,好麻烦哦。提取出来的坐标如果我想按我的顺序去画线又该怎么做呢。请各位老手指教一二,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-3-18 11:47:15 | 显示全部楼层
先研究一下论坛,有很多例子.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-18 14:24:32 | 显示全部楼层
那到底有没有方法可以提取pl线的坐标数据呢,我用原来的方法,就是entget提出来的坐标数据就是(10 0.0 0.0 0.0).这是什么原因啊


其实我想问的就是斑竹以前回复过的那篇关于多段线反向的问题。
你当时说pl线的反向问题很简单可没说具体怎么做,而且你们给的代码都是针对lp线的,这和我现在工作的要求不同哦,麻烦你给解释一下行吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-18 15:34:34 | 显示全部楼层
参考:
  1. [FONT=courier new];;;多义线顶点坐标集(支持框选)
  2. (defun c:test ()
  3.   (princ "\n选取*PLINE多义线...")
  4.   (setq        ss    (ssget '((0 . "*POLYLINE")))
  5.         i     -1
  6.         ptlst '()
  7.   )
  8.   (if ss
  9.     (progn
  10.       (while (setq s1 (ssname ss (setq i (1+ i))))
  11.         (setq ret (vla-get-Coordinates (vlax-ename->vla-object s1))
  12.               n          0
  13.         )
  14.         (repeat
  15.           (/ (length (vlax-safearray->list (vlax-variant-value ret)))
  16.              2
  17.           )
  18.            (setq ptx   (vlax-safearray-get-element
  19.                          (vlax-variant-value ret)
  20.                          n
  21.                        )
  22.                  n     (1+ n)
  23.                  pty   (vlax-safearray-get-element
  24.                          (vlax-variant-value ret)
  25.                          n
  26.                        )
  27.                  n     (1+ n)
  28.                  pt    (list ptx pty)
  29.                  ptlst (cons pt ptlst)
  30.            )
  31.         )
  32.       )
  33.       (princ "\n多义线顶点坐标集 (!ptlst) : ")
  34.       (princ"\n")
  35.       (if ptlst
  36.         (princ ptlst)
  37.       )
  38.     )
  39.     (princ "\n未选到多义线!")
  40.   )
  41.   (princ)
  42. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-19 19:43:19 | 显示全部楼层
感谢感谢,嘿嘿,xyp能顺带问一下扩展数据是怎么回事吗?又该怎么提取呢,不知道你有没有更新xyp-lib,最好给个提取扩展数据的函数吧,嘿嘿
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-19 19:55:08 | 显示全部楼层
多研究研究吧,研究完告诉我就行了,谢谢了
呵呵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-20 14:43:08 | 显示全部楼层
按不同的线型提取是一种很基本的操作,CAD的几种基本线型包括LINE、POLYLINE、LWPLYLINE等,spline是一种图形编辑中较少用到的种
;线型之一,SPLINE线经过编辑以后,SPLINE线会增加未知的许多端点,使列表无法正常分析。而且在常用线型中
;我们也很难看到使用SPLINE做为规范线型的例子。因此我们主要针对POLYLINE、LWPLYLINE、两种线形作分析:
(defun c:test7 (/ ss1 sslist ss1date)
  (setq ss1 (car (entsel"拾取范围线:")))
  (setq enddate nil)
  (setq sslist (entget ss1))
  (setq ss1date (cdr (assoc 0 sslist)))
  (cond ((= "lwplyline" ss1date) (c:ltest));当范围线是复合线的时候,一般为这种线型
        ((= "polyline"  ss1date) (c:ptest));拟合线大多为这种线型
  )
)
(defun c:ltest()
  (setq ss1number (assoc 90 sslist));返回数据列表中的顶点数
  (setq ss1date (member (assoc 10 sslist ) sslist));从第一个坐标点对表开始排列组成新的列表
  (setq dump 0);设置循环量
  (repeat ss1number;|重复步数|;
    (setq enddate (cons (cdr (nth dump ss1date) enddate)));提取第一个坐标点对组表
    (setq dump (+ dump 3.0))
  )
  (princ enddate)
  (princ)
)
(defun c:ptest ()
   (setq ss2 (entnext ss1))
   (setq ss2date (entget ss2))
   (setq ss2ent (assoc 0 ss2date))
   (while  (/= "seqend"  ss2ent)
           (setq ss2list (cdr (assoc 10 ssdate)))
           (setq enddate (append enddate (list ss2list)))
           (setq ss2 (entnext ss2))
           (setq ss2date (entget ss2))
           (setq ss2ent  (assoc 0 ss2date))
   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-2 22:12:38 | 显示全部楼层
斑竹你的反向程序运行后虽然反向了可是pl线变成lp线了哦,该怎么处理啊
有没有将lp线和pl线互换的函数或命令呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-12 04:01:54 | 显示全部楼层
给4楼的版主提个醒

;;;多义线顶点坐标集(支持框选)
(defun c:test ()
  (princ "\n选取*PLINE多义线...")
  (setq        ss    (ssget '((0 . "*POLYLINE")))
        i     -1
        ptlst '()
  )
  (if ss
    (progn
      (while (setq s1 (ssname ss (setq i (1+ i))))
        (setq ret (vla-get-Coordinates (vlax-ename->vla-object s1))
              n          0
        )
        (repeat
          (/ (length (vlax-safearray->list (vlax-variant-value ret)))
             2
          )
。。。。。。
版主的 (ssget '((0 . "*POLYLINE"))) 应改为(ssget '((0 . "LWPOLYLINE")))
否则如果是 (ssget '((0 . "POLYLINE"))) 的话, (/ (length (vlax-safearray->list (vlax-variant-value ret))) 2 ) 就错了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-12 20:29:54 | 显示全部楼层
斑竹你的反向程序运行后虽然反向了可是pl线变成lp线了哦,该怎么处理啊
有没有将lp线和pl线互换的函数或命令呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 05:49 , Processed in 0.501681 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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