你好
我有一个Lisp程序的人很好的工作(所有这一切都是好的塔瓦谁写的),但它不适合我。
该lisp旨在将平面的二维平面转换为平面内有导管或护套的三维平面。有两条多段线(一条用于平面的外部,另一条用于风管的外部)。
该过程是设置多段线的高程并拉伸平面的多段线,而不包含平面内“风管”的体积。
你可以在塔尔瓦特邮报的视频中看到。
这是lisp,我不明白为什么有消息表明ssget函数模式错误
- (defun c:ex-sub (/ sd s pts ss cm e ent i s1)
- ;;; ==-- Author : Tharwat Al Shoufi --== ;;;
- ;;; Extrude and extract inside polylines ;;;
- (vl-load-com)
- (or Doc (setq Doc (vla-get-ActiveDocument (vlax-get-acad-object))))
- (setq *elv* (if *elv*
- *elv*
- 1.0
- )
- *ex* (if *ex*
- *ex*
- 1.0
- )
- )
- (if
- (and (progn (initget 6)
- (setq *elv* (cond ((getdist (strcat "\n Specify Elevations " (strcat " < " (rtos *elv* 2 2) " > :"))))
- (t *elv*)
- )
- )
- )
- (progn (initget 6)
- (setq *ex* (cond ((getdist (strcat "\n Specify extrusion height " (strcat " < " (rtos *ex* 2 2) " > :"))))
- (t *ex*)
- )
- )
- )
- (setq sd (ssadd))
- (setq s (car (entsel "\nSelect Single outside LWpolyline")))
- (if (wcmatch (cdr (assoc 0 (setq e (entget s)))) "*POLYLINE")
- t
- (progn (princ "\n Your selection is not a polyline or nothing selected !!") nil)
- )
- )
- (progn (foreach pt e
- (if (eq (car pt) 10)
- (setq pts (cons (list (cadr pt) (caddr pt)) pts))
- )
- )
- (if (setq ss (ssget "WP" pts '((0 . "*POLYLINE"))))
- (progn (vla-StartUndoMark Doc)
- (setq cm (getvar 'cmdecho))
- (setvar 'cmdecho 0)
- (entmod (subst (cons 38 *elv*) (assoc 38 e) e))
- (command "_.extrude" s "" *ex*)
- (setq s1 (entlast))
- (repeat (setq i (sslength ss))
- (entmod (subst (cons 38 *elv*) (assoc 38 (setq ent (entget (ssname ss (setq i (1- i)))))) ent))
- (command "_.extrude" (ssname ss i) "" *ex*)
- (ssadd (entlast) sd)
- )
- (command "_.subtract" s1 "" sd "")
- (setvar 'cmdecho cm)
- (vla-Endundomark Doc)
- )
- )
- )
- (princ)
- )
- (princ "\n Written by Tharwat Al Shoufi")
- (princ)
- )
你能帮我找到解决办法吗?
Lisp程序对你有用吗?
谢谢塔瓦的帮助! |