当我选择洋红色线时出错。
“选择洋红色线:;错误:错误参数类型:2D/3D点:(-1388.12 3.70499e-013 1668.58-791.629 5.12511e-013 2308.15)
如何解决这个问题?
谢谢
致以诚挚的问候!
该线只能与每条多段线有一个交点。
请检查代码是否适用于Frames_2。dwg并发布新的dwg。 具有Frames_2的代码正在工作。但当我尝试在同样的情况下工作时,它是无效的。
我尝试将帧保持在x0y上,并沿轴0z移动,然后旋转。
但也有错误。
你能看一下这幅画吗
谢谢
致以诚挚的问候!
图纸3.dwg 当涉及到截面的三维对齐时,您的图形不一致。但新代码将处理第一个和最后一个图形。
在上一个图形中,有两个截面是闭合多段线。必须更仔细地拾取临时线的点,以避免它们相交两次。
下面是新代码。
代码将绘制(并删除)临时线。
仅移动红色多段线。
(defun KGA_Conv_Pickset_To_ObjectList (ss / i ret)
(if ss
(repeat (setq i (sslength ss))
(setq ret (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ret))
)
)
)
(defun c:Test ( / cur doc end errCnt inc lnObj ss sta vec)
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vla-endundomark doc)
(vla-startundomark doc)
(if
(and
(setq sta (getpoint "\nStart point of temporary line (line may intersect every polyline only once!): "))
(setq end (getpoint sta "\nEnd point of temporary line: "))
(setq ss (ssget "_F" (list sta end) '((0 . "LWPOLYLINE") (62 . 1))))
(setq inc (getreal "\nDistance between sections: "))
)
(progn
(setq ss (KGA_Conv_Pickset_To_ObjectList ss))
(setq errCnt 0)
(setq vec (trans (list 0.0 0.0 (- inc)) 0 (vlax-get (car ss) 'normal))) ; Use the normal of the first object in ss.
(setq cur '(0.0 0.0 0.0))
(setq lnObj (vlax-invoke (vla-get-modelspace doc) 'addline (setq sta (trans sta 1 0)) (trans end 1 0)))
(foreach
plObj
(mapcar
'cadr
(vl-sort
(vl-remove
nil
(mapcar
'(lambda (plObj / coordLst)
(setq coordLst (vlax-invoke lnObj 'intersectwith plObj acextendnone))
(if (= 3 (length coordLst))
(list (distance sta coordLst) plObj)
(progn
(setq errCnt (1+ errCnt))
nil
)
)
)
ss
)
)
'(lambda (a b) (< (car a) (car b)))
)
)
(vlax-invoke plObj 'move '(0.0 0.0 0.0) (setq cur (mapcar '+ cur vec)))
)
(vla-delete lnObj)
(if (/= 0 errCnt)
(princ (strcat "\nError: skipped " (itoa errCnt) " polyline(s) that were intersected more than once "))
)
)
)
(vla-endundomark doc)
(princ)
)
页:
1
[2]