[求助]请问如何实现点选闭合多义线获得ssget集?
在一个闭合的多义线围成的范围内有很多小的闭合多义线,我想求那些小多义线的面积和。但是不知道怎样用那个外围多义线的定点列表构成ssget "wp" 的点对表。我是初学者,请哪位指点一下。用WP不行,要用F
陈老师能说详细点吗。那个已有PL线的定点如何取得啊。
遍历这个对象的数据库,取出定点...
我有程序
你是在国土局的吧?我们是同行,我有这个程序,你给我发EMAIL:AUTOLISP@X263.NET,你是用CAD14、CAD2000、CAD2002,版本不同要改程序的,过几天我给你发过去。再打扰..
怎样遍历呢?我不了解lisp的数据结构。比如取出一个(10 . xxx,xxx)之后,用什么语句取下一个呢,什么条件判定选取结束呢。 望不吝赐教。信已发出,多谢你了。
我是这样做的:
找到第一个定点在数据表中的位置,然后循环累加定点的位置偏移量,就可以了。典型模拟程序...
(Defun C:PLL ()(PrinC "\n这是对 PolyLine 进行数据分析的基本程序...")
(While (Progn (SetQ pen (Car (EntSel "\n指定一条 PolyLine: ")))
(/= "POLYLINE" (Cdr (Assoc 0 (EntGet pen))))
)
(Alert "所指对象不是 PolyLine,请重新指定...")
) ;指定PolyLine
(SetQ pel (EntGet pen) ;取出对象表
ptp (Cdr (Assoc 70 pel)) ;取出结束片段型
wpl '() ;自建的点位数表
pen (EntNext pen)
)
(While (/= "SEQEND" (Cdr (Assoc 0 (EntGet pen)))) ;如果没结束
(SetQ pel (EntGet pen) ;取得顶点对象数据表
plp (Cdr (Assoc 10 pel)) ;取出控制点点位
par (Cdr (Assoc 42 pel)) ;取出弓弦比
wpl (Cons (List plp par) wpl) ;将数据加到WPL表中
)
(SetQ pen (EntNext pen)) ;搜索下一个对象
)
(SetQ ct (If (= 0 (Cadr (Car wpl))) "直线片段封闭" "弧片段封闭"))
(SetQ wpl (Cons (Last wpl) wpl) ;加入封闭点
wpl (Reverse wpl) ;整理WPL表
rl (Length wpl)
pn 0
)
(SetQ clk (If (Or (= 0 ptp) (= 128 ptp)) "开口" "封闭"))
(SetVar “pdmode” 3)
(Repeat (1- rl) ;逐点分析
(SetQ al (Nth pn wpl) ;取出点数据表
pt (Car al) ;取出点位
)
(Command "point" pt)
(PrinC "\n") (PrinC al)
(If (And (/= 0.0 (Cadr al)) (Nth pn wpl)) ;如果是弧片断
(Progn (SetQ gx (Cadr al) ;取出弓比
bj (* (ATAN (ABS gx)) 4) ;计算包角
np (Car (Nth (1+ pn) wpl));取出下一点位
xc (* 0.5 (Distance pt np));半弦长计算
gg (* gx xc) ;弓高计算
rr (/ (+ (* xc xc)(* gg gg)) (* 2 gg))
)
(SetQ cp (Polar pt (SetQ pa (Angle pt np)) xc)
cp (Polar cp (+ pa (* 0.5 Pi)) (- rr gg))
)
(Command "text" "m" cp 2 0
(StrCat "R" (RToS (Abs rr)))
"text" "" (AngToS bj)
"circle" cp 5
)
)
)
(SetQ pn (1+ pn)) ;搜索序号步进
)
(Alert (StrCat "结束段状态:\n"
clk
(If (= "封闭" clk) ct "")
)
)
(PrinC)
)