lisp pl线线段数_晓东CAD家园-论坛-A/VLISP-[LISP函数]:请教老师在编lisp中遇到的问题:如何把pL多义线的各顶点按顺序编号?-请问老师和各位高手:我在编程(lisp)时,不知...

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

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

x

请问老师和各位高手:我在编程(lisp)时,不知如何把pL多义线的各顶点按顺序自动编号。

比如,一条PL多义线有80个顶点,我希望把一端的起点设为T1,第二点自动编为T2,......至

最后一点自动编为T80;然后在输出的顶点坐标文件时,把T1、T2、T3......T80等与顶点坐标

一一对应上。

多谢陈老师和各位高手指教。

下面是我下载老师的有关程序,请教老师如何把‘各顶点自动编号’也加到程序中?

是不是要用regapp函数扩展数据呢?

**********************************************************************************

作(译)者:  陈伯雄

上传时间:2002年9月3日

(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)

)

**********************************************************************************

广告位,后台可以设置,支持js

您好,您暂时不能浏览帖子的全部内容,请 登录

| 没有账号? 请 注册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值