Ohnoto 发表于 2022-7-6 09:23:04

绘制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>
 
感谢您的帮助,
谢谢

VVA 发表于 2022-7-6 09:59:53

(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))
         )
   )
   )
)

Ohnoto 发表于 2022-7-6 10:16:20

谢谢
 
出现了一个小问题,在这里绘制的线不仅是最近的线,而且是更远的线。
 

Ohnoto 发表于 2022-7-6 10:25:20

有没有关于如何解决这个问题的建议?
页: [1]
查看完整版本: 绘制PLine