口齿不清的错误
你好我有一个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程序对你有用吗? youtube链接无效
我们等待着塔瓦。
您好,GP,
以下是
请尝试代码,并告诉我,如果它与你的工作或没有在视频中显示回来。 你好
我有一个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程序对你有用吗?
谢谢塔瓦的帮助! 是的,卡拉克找到解决方案http://www.autolisp.com :
http://www.autolisp.com/forum/threads/797-Lisp-to-extrude-polyline-with-elevation-and-duct-inside-the-polyline?p=2928#post2928
谢谢卡拉,你有个好主意!
非常感谢你的帮助!我非常感激!
随时欢迎你。
使用“WP”
正确,之前Carl在这个链接中解决了这个问题。
谢谢你的时间,非常感谢。
页:
[1]