绘制PLine
我们这里有一些代码,可以根据ACAD中的点插入块,我正在尝试调整代码中的某些点来绘制线。这是一个相当长的代码,所以我只想附加特定于绘制线的部分。;;;-----------------MyGPSLineLayer MyLineLayer
(EXAGS_LineFunction "gps-entrance" "FOC")
(defun EXAGS_CreateBaselineSet ()
(setq exagsBaselineSet
(ssget "_X" (list
(cons 0 "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE,POLYLINE,SPLINE")
(cons 8 "GPS-ROAD,BASELINE,EOG,EOP,FOGLINE,FOC")
)))
)
(defun EXAGS_LineFunction (myGPSLineLayer myLineLayer)
(if
(setq pointSet (ssget "_X" (list (cons 0 "POINT")(cons 8 myGPSLineLayer)))) ; declare the set (pointSet)
(progn
(setq cntr 0)
(while (< cntr (sslength pointSet))
(setq ename (ssname pointSet cntr))
(setq enlist (entget ename))
(setq pt (cdr (assoc 10 enlist)))
(setvar "clayer" myLineLayer)
(setq pt2 (vlax-curve-getClosestPointto exagsBaselineSet pt))
(command "_pline" pt pt2)
(setq cntr (+ cntr 1))
)
)
)
)
目前,我遇到一个错误:无法获取ObjectID:set:6ca>
感谢您的帮助,
谢谢 (setq pt2 (vlax-curve-getClosestPointto exagsBaselineSet pt))
exagsBaselineSet的类型应为vla对象,而不是选择集
如果我理解这个问题
(defun EXAGS_LineFunction (myGPSLineLayer myLineLayer ObjList)
(if
(setq pointSet (ssget "_X" (list (cons 0 "POINT")(cons 8 myGPSLineLayer)))) ; declare the set (pointSet)
(progn
(repeat (setq cntr (sslength exagsBaselineSet))
(setq ObjList (cons (ssname exagsBaselineSet (setq cntr (1- cntr))) ObjList))
)
(setq ObjList (mapcar 'vlax-ename->vla-object ObjList))
(setq cntr 0)
(setvar "clayer" myLineLayer)
(while (< cntr (sslength pointSet))
(setq ename (ssname pointSet cntr))
(setq enlist (entget ename))
(setq pt (cdr (assoc 10 enlist)))
(foreach Obj Objlist
(setq pt2 (vlax-curve-getClosestPointto Obj pt))
(command "_pline" "_none" pt "_none" pt2 "")
)
(setq cntr (+ cntr 1))
)
)
)
)
谢谢
出现了一个小问题,在这里绘制的线不仅是最近的线,而且是更远的线。
有没有关于如何解决这个问题的建议?
页:
[1]