kili 发表于 2022-7-6 09:59:59

是否有类似口齿不清的度量值a

是否有类似lisp的测量和分割功能,可以将块与多段线对齐?有点像执行MEASURE或DIVIDE命令,当它提示“将块与对象对齐”时忘记应用“YES”
 
原因是我们正在使用第三方软件land/X,它的模块保存着某种智能数据。简单地将其作为块插入将无法访问块数据。即使是COPY命令也会让事情变得一团糟。所以我要做的是沿着我需要灌溉头的地方画一条线来连接一个许可证。然后,我根据灌溉头喷洒半径划分或测量线,然后将灌溉头沿节点向下放置。然后我旋转它们,使它们与曲线的中心点对齐,或沿pline本身对齐。
 
对于几个区块来说似乎很容易,但对于一个大型站点来说,在超过10000个单独区块的情况下这样做会让你发疯。
 
谢谢

BIGAL 发表于 2022-7-6 10:09:21

在此处搜索“pline链测长度”这用于以给定间距沿pline写入运行链测长度。如果是一个良好的起点,请将“添加文本”更改为“添加块”,以确保以后的版本自动旋转文本。
 
这里至少有两个版本。

alanjt 发表于 2022-7-6 10:18:53

http://www.cadtutor.net/forum/showthread.php?46309-复制长曲线。LSP动态分割测量

kili 发表于 2022-7-6 10:29:29

@alanjt:序列非常接近,除了我不是复制,而是简单地旋转以对齐,块已经就位,但需要一个lisp将每个块与pline对齐。
 
我的顺序是绘制PLINE,然后根据灌溉头喷雾半径进行测量,然后在每个节点处插入其块,0旋转。然后我必须回到每一个,沿着柱脚旋转。
 
问题是,由于每个块都有数据,我无法复制或使用“测量和分割”中的“块”选项。每个块都有数据来确定大小和psi计算。只需复制对象即可删除数据。

alanjt 发表于 2022-7-6 10:34:24

我写了一个旋转一,但忘了张贴。我早上一到办公室就发邮件。

Lee Mac 发表于 2022-7-6 10:43:31

 

 
http://www.cadtutor.net/forum/showthread.php?47495-将块与曲线对齐

alanjt 发表于 2022-7-6 10:59:58

(defun c:RAC (/ ss ent)
;; Rotate blocks Along Curve
;; Required subroutines: AT:GetSel, AT:AngleAtPoint
;; Alan J. Thompson, 12.20.10

(vl-load-com)

(if (and (setq ss (ssget "_:L" '((0 . "INSERT"))))
          (setq ent
               (car
                   (AT:GetSel
                     entsel
                     "\nSelect curve to rotate objects along: "
                     (lambda (x)
                     (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getEndParam (list (car x))))
                     )
                     )
                   )
               )
          )
   )
   (progn
   (vlax-for x (setq ss (vla-get-activeselectionset
                            (cond (*AcadDoc*)
                                  ((setq *AcadDoc* (vla-get-activedocument
                                                   (vlax-get-acad-object)
                                                   )
                                 )
                                  )
                            )
                        )
               )
       (vl-catch-all-apply
         (function
         (lambda (/)
             (vla-put-rotation
               x
               (AT:AngleAtPoint
               ent
               (vlax-curve-getClosestPointToProjection ent (vlax-get x 'InsertionPoint) '(0 0 1))
               )
             )
         )
         )
       )
   )
   (vla-delete ss)
   )
)
(princ)
)


(defun AT:GetSel (meth msg fnc / ent good)
;; meth - selection method (entsel, nentsel, nentselp)
;; msg - message to display (nil for default)
;; fnc - optional function to apply to selected object
;; Ex: (AT:GetSel entsel "\nSelect arc: " (lambda (x) (eq (cdr (assoc 0 (entget (car x)))) "ARC")))
;; Alan J. Thompson, 05.25.10
(setvar 'errno 0)
(while (not good)
   (setq ent (meth (cond (msg)
                         ("\nSelect object: ")
                   )
             )
   )
   (cond
   ((vl-consp ent)
      (setq good (cond ((or (not fnc) (fnc ent)) ent)
                     ((prompt "\nInvalid object!"))
               )
      )
   )
   ((eq (type ent) 'STR) (setq good ent))
   ((setq good (eq 52 (getvar 'errno))) nil)
   ((eq 7 (getvar 'errno)) (setq good (prompt "\nMissed, try again.")))
   )
)
)


(defun AT:AngleAtPoint (e p)
;; Return angle along curve, at specified point (on curve)
;; e - valid curve (ENAME or VLA-OBJECT)
;; p - point on curve
;; Alan J. Thompson, 11.04.10
(angle '(0. 0. 0.) (vlax-curve-getFirstDeriv e (vlax-curve-getParamAtPoint e p)))
)

kili 发表于 2022-7-6 11:04:35

我会尝试两者,看看会发生什么。敬请期待。干杯
 
更新:
两者都很好!RAC和对象对齐。
 
对于RAC,我注意到无论对象的角度是什么,它都会使对象与柱脚垂直对齐。我的方向控制是这样设置的吗?,它总是默认为向东。
页: [1]
查看完整版本: 是否有类似Lisp程序的度量值a