明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wind65

求指点:怎样 用lisp语言找出LWpolyline各顶点的坐标?

    [复制链接]
发表于 2008-11-18 17:29:00 | 显示全部楼层
本帖最后由 作者 于 2008-11-19 14:22:07 编辑

liminnet发表于2008-11-18 16:53:00(defun c:caoyin(/ lst i newlst)
     caoyin大哥
发表于 2008-11-18 19:42:00 | 显示全部楼层
(defun c:caoyin (/ lst i newlst)
  (vl-load-com)
  (setq lst (vlax-safearray->list
       (vlax-variant-value
  (vla-get-coordinates
    (vlax-ename->vla-object (car (entsel)))
  )
       )
     )
  )
  (setq newlst '()
  )
  (repeat (/ (length lst) 2)
    (setq newlst (append  newlst(list (list (car lst) (cadr lst)))))
    (setq lst (cddr lst))
  )
  newlst
)
 楼主| 发表于 2008-11-19 10:30:00 | 显示全部楼层

我是楼主,谢谢大家,还有个问题:好像是得到了一个坐标的表,但这个表怎么利用?比如我要用“line”画一条通过

这些坐标的连线,怎么办?(command “line” ........)

发表于 2008-11-19 11:05:00 | 显示全部楼层

得到lwpolyline的坐标的方法可以用(vl-remove-if '(lambda (x) (/= (car x) 10)) lwploly)

参数lwpoly 是由entget获得的多义线的列表,

你上面的说的不是太清楚,

发表于 2008-11-19 13:42:00 | 显示全部楼层

(command "line")

(foreach pt lst

(command pt)

)

(command "")

发表于 2008-11-19 14:16:00 | 显示全部楼层
(setq com (quote "(command \"line\" "))
(foreach pt lst
 (setq com (strcat com "'" (vl-princ-to-string pt) " "))
)
(eval (read (strcat com " \"\")")))
 楼主| 发表于 2008-11-19 14:59:00 | 显示全部楼层

谢谢楼上的noonsmall大师,我是想画一条lwpline线,把里边的东西保留,外面的切除。

先朝内部offset,再用trim沿外面的LWpline线的顶点“F”我照您的程序组合了一下

(defun c:cc (/ lst ent pt pp ss)

  (setq ent (entget (entlast)) lst nil)

    (while (setq pt (cdr (assoc 10 ent)))

    (setq lst (append lst (list pt)))

    (setq ent (cdr (member (cons 10 pt) ent)))

    )

   lst


    (setq ss (getpoint "保留"))


    (command "offset" 0.01 (nth 1 lst) ss "")

    (command "trim" "l" "" "f" "")


    (foreach pp lst

       (command pp)

    )

    (command "")
)

可惜不行,不知道哪里错了。我是用它来截取地形图的,不编个程序太累了,可水平不高,连这样半自动化的程序都编不好,惭愧

发表于 2008-11-20 08:49:00 | 显示全部楼层

截取地形图的话你可以把图参照进来(或者直接把需要剪开的做成块)

然后用xclip一次性就可以剪开

你这样做效果反而不好

 楼主| 发表于 2008-11-20 12:57:00 | 显示全部楼层
谢谢,不过刚才试了一下,剪下来的东西就不能编辑了。
 楼主| 发表于 2008-11-20 13:45:00 | 显示全部楼层

看来把一块大平面图很完美地截取一小块出来是个超级难题呀,我本来还以为很简单呢,用offset,trim。。。

如果不行,用break把与pline相交的线都打断,再把外面的都删除?也有难度,怎么判断交点?

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

本版积分规则

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

GMT+8, 2025-6-19 12:13 , Processed in 0.183430 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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