lisp边长注记_autolisp 输入的列表有缺陷 ; 错误: 参数太多: (IF (= ( ... ) 1) (SETQ PTLST ( ... )) (SETQ N ( ... )...

博客介绍了AutoLISP程序用于自动注释边长长度的代码,针对出现的错误进行了解析。错误出现在参数过多,可能为括号不匹配。博主寻求大神帮助解决此问题,并提供了完整的程序代码供参考。
摘要由CSDN通过智能技术生成

作用是,边长长度自动注记代码如下(defunmkptlst(pen1/bhbjptlstpenpelptipt1pt2);;取出"polyline"或lwpolyline的点位,以表的结构返回(if(=(cdr(assoc0(entgetpen1)))"POLYLINE")(pr...

作用是,边长长度自动注记

代码如下

(defun mkptlst (pen1 / bhbj ptlst pen pel pt i pt1 pt2)

;;取出"polyline" 或 lwpolyline的点位,以表的结构返回

(if( = ( cdr (assoc 0 (entget pen1))) "POLYLINE")

(progn (setq ptlst '())

(setq pen (entnext pen1))

(while (/ = "SEQEND" ( cdr (assoc 0 (entget pen))))

(setq pel (entget pen))

(setq pt ( cdr (assoc 10 pel)))

(setq ptlst (append ptlst (list pt)))

(setq pen (entnext pen))

)

(setq bhbj ( cdr (assoc 70 (entget pen1))))

(if( = (logand bhbj 1) 1)

(setq ptlst (mkptlst stm))

(setq n (length ptlst))

(setq j 0)

(while ( < j ( - n 1))

(setq pt1 (nth j ptlst))

(setq pt2 (nth ( + j 1) ptlst))

(setq di (distance pt1 pt2))

(setq ptm (c:cal "plt(pt1,pt2,0.5)"))

(setq ang (angle pt1 pt2))

(setq di (rtos di 2 2))

(setq entlist (list (cons 1 di)))

(setq txtlen ( car ( cadr (textbox entlist)))

(if ( and ( < ang ( * 3 (/ pi 2))) ( > ang (/ pi 2)))

(setq ang (angle pt2 pt1))

)

(setq ang1 ( + ang ( / pi 2)))

(setq pti ( polar ptm ang ( * -0.5 txtlen)))

(setq pti ( polar pti angl dv))

(setq pt3 ( polar pti ang dv))

(command "text" pti "" pt3 di)

(setq j ( + j 1))

)

(setq i ( + i 1))

)

)

)

(sttvar "osmode" os)

) (setq ptlst (cons pt ptlst))

)

)

)

(if ( = ( cdr (asspr 0 (setq pen1 (entget pen1)))) "LWPOLYLINE")

(progn (setq bhbj (cdr(assoc 70 pen1)))

(steq ptlst '())

(setq pen (cdr(assoc 90 pen1)))

(setq pen1 (member'(100 . "AcDbPolyline") pen1))

(setq i 6)

;;数据读取序号初值

(repeat pen

(setq pt (cdr(nth i pen1)))

(setq ptlst (append ptlst (list pt)))

(steq i ( + 4 i))

)

(if ( = (logand bhbj 1) 1)

(steq ptlst (cons pt ptlst))

)

)

)

(if ( = ( cdr (assoc 0 pen1)) "LINE")

(progn (steq pt1 (cdr (assoc 10 pen1)))

(setq pt2 (cdr (assoc 11 pen1)))

(setq ptlst (list pt1 pt2))

)

)

ptlst

)

(defun c:zjcd(/ ANG ANG1 DI DV ENTLIST I J

LEN N PT1 PT2 PT3 PTI PTLST PTM SS1

STM TXTLEN os

)

(if (null cal)

(arxload "geomcal")

)

(setq os (getvar "osmode"))

(setvar "osmode" 0)

(setq ss1 (ssget'((-4 . "

(0 . "POLYLINE")

(0 . "LWPOLYLINE")

(0 . "LINE")

(-4 . "OR>")

)

)

)

(if ss1

(progn (initget 4 "")

(setq

dv (getreal

(strcat "\n 输入字高: ")

)

)

(if dv

(setvar "textsize" dv)

)

(initget 4 "")

(setq dv (getreal (strcat "\n 输入离线距离: <0.2>")))

(if (not dv)

(setq dv 0.2)

)

(setq i 0)

(setq len (sslength ss1))

(while ( < i len)

(setq stm (ssname ss1 i))

运行有错误。。。。

[检查文字 zjcd.lsp 正在加载...]

.

; 错误: 参数太多: (IF (= ( ... ) 1) (SETQ PTLST ( ... )) (SETQ N ( ... )) ... )

; 错误: 输入中含有多余的闭括号

; 检查完成.

求大神帮忙解决,谢谢

大哥,这个是所有程序的样子,您有空看看,麻烦了。。。谢谢哥

http://wenku.baidu.com/view/bdf4cbeb551810a6f52486f9.html

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值