马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
请高手帮忙诊断一下这个程序,老出问题.本人学lsp不深,请大虾们多多指点.(注明:此程序借鉴了网上资料,出处不详了,如原作者见到,还望指点).

- [FONT=courier new]
- ;;主要思路:将pl图层上的多条pline线每条最长的一段两端加钩,其余的删除。
- (defun c:BZG ()
- (SSBDJ)
- (BZGz)
- (prin1)
- )
-
- (defun xdd1(/ eobj i leng pt0 pt1)
- ((setq eobj (vlax-ename->vla-object ssn))
- i -1
- Leng-max 0
- )
- (while (setq pt0 (vlax-curve-getPointAtParam eobj (setq i (1+ i))))
- (if (setq pt1 (vlax-curve-getPointAtParam eobj (setq k (1+ i))))
- (progn
- (setq Leng (distance pt0 pt1))
- (if (> leng leng-max)
- (setq ptmax0 pt0
- ptmax1 pt1
- leng-max leng
- )
- )
- )
- )
- )
- )
- (defun SSBDJ(/ old_wid wid width ssbdj)
- (setvar "cmdecho" 0)
- (setq old_wid (getvar "PLINEWID")) ;线宽度(默认为图中默认PLINEWID值)
- (setq wid (strcat "\n 请输入线宽度<" (rtos old_wid 2) ">: "))
- (setq width (getdist wid))
- (if (null width) (setq width old_wid))
- (prompt "\n\t选择加钩的pline线<退出> : ")
- (setq ssgj (ssget '((8 . "pl" )) )) ;图层为pl的线才加
- )
- (defun BZGz ()
- (setq n 0)
- (while (< n (sslength ssgj))
-
- (setq ssn (ssname ssgj n))
- (setq ssdata (entget ssn))
- (setq sstyp (cdr (assoc 0 ssdata)))
- (if (= sstyp "LWPOLYLINE")
- (progn
- (xdd1)
- (setq ang (angle ptmax0 ptmax1))
- (setq pp1 (polar ptmax0 ( + (* pi 0.25) ang) 150))
- (setq pp2 (polar ptmax1 ( + (* pi 0.75) ang) 150))
-
- (command "pline" pp1 "w" width width ptmax0 ptmax1 pp2"")
- (command "erase" (car ssn) "" ) ;将选中的pline删除
- )
- )
- (setq n (1+ n))
- );end while
- (prin1)
-
- )
- [/FONT]
|