gazzalp 发表于 2022-7-6 16:30:17

偏移2行添加尺寸

我想要一个lisp,可以在平面图中添加带束。我看到它工作的方式是我选择一个网格,它在一个叫做混凝土的层上每侧偏移1200mm的线,并设置为线型“awthidden2”。我希望它也能自动添加2400的维度,以及一个我们称之为SYM-SlabTag的块(不确定这个是否可行,以及编写lisp的人是否需要查看该块)

asos2000 发表于 2022-7-6 16:34:46

你能上传一个样本吗

Lee Mac 发表于 2022-7-6 16:42:12

如果你能上传一个你想要完成的事情的样本,那么这个模块将真正有助于理解正在发生的事情。

gazzalp 发表于 2022-7-6 16:44:52

干得好。目前,我只是将其全部放在一个dwg上,但实际情况是网格将出现在外部参照上,以及我想要在新图形上的所有其他项目上。因此,我将打开一个没有任何内容的新图形,在网格中进行外部参照,启动lisp,它将请求网格,我选择网格(选择网格的顶部和底部),它将两条绿线放在(网格每侧1200)上,带有尺寸和“slab tag”谢谢大家
测验图纸

Lee Mac 发表于 2022-7-6 16:49:21

很难在外部参照的每一侧偏移线,这就是我发现的问题。
 
因为,很明显,对于块,无法从块本身偏移任何线。

gazzalp 发表于 2022-7-6 16:54:11

我的措辞有点糟糕;它不必偏移这些线。我看到的是,我们有一条网格线,lisp可以要求我们提供中心线(选择网格的最底部和最顶部点),然后它知道最外面的线将是我们选择的点的任意一边1200。然后在中间添加尺寸和标签。在某种程度上,它就像一条多行,其中有两条虚线,多行的中心是网格(除了我不想要多行,这只是一个例子),希望这能解决问题。

Lee Mac 发表于 2022-7-6 16:56:37

试试这个:
 

(defun c:gridline (/ *error* varLst oldVars tpt bpt ang llpt l1 lrpt l2 l1mid l2mid)

;   --- Error Trap ---

   (defun *error* (msg)
   (mapcar 'setvar varLst oldVars)
   (if (= msg "")
       (princ "\nFunction Complete.")
       (princ "\nError or Esc pressed... ")
   ) ;_end if
   (princ)
   ) ; end of *error*

   (setq varLst(list "CMDECHO" "CLAYER" "OSMODE")
   oldVars (mapcar 'getvar varLst)
   ) ; end setq

;    --- Error Trap ---

   (setvar "cmdecho" 0)

   (defun makelay (x)
   (if (not (tblsearch "Layer" x))
       (command "-layer" "m" x "")
   ) ;_end if
   ) ;_end defun

   (if    (and
       (setq tpt (getpoint "\nSelect Top Point of Gridline: "))
       (setq bpt (getpoint "\nSelect Base Point of Gridline: "))
   ) ;_end and
   (progn
       (setq ang (angle tpt bpt))
       (setvar "osmode" 0)
       (makelay "Concrete")
       (setvar "clayer" "Concrete")
       (command "_line"
            (setq llpt (polar tpt (+ ang (/ pi 2)) 1200))
            (polar llpt ang (distance tpt bpt))
            ""
       ) ;_end command
       (setq l1 (entlast))
       (command "_line"
            (setq lrpt (polar tpt (- ang (/ pi 2)) 1200))
            (polar lrpt ang (distance tpt bpt))
            ""
       ) ;_end command
       (setq l2 (entlast))
       (command "_chprop" l1 l2 "" "lt" "awthidden2" "")
       (setq l1mid (polar llpt ang (/ (distance tpt bpt) 2)))
       (setq l2mid (polar lrpt ang (/ (distance tpt bpt) 2)))
       (makelay "Dimensions")
       (setvar "clayer" "Dimensions")
       (command "_dimaligned" l1mid l2mid l1mid)
       (alert
       "\nI'm not sure what you would like done with the block...
          \nCheers
         \nLee Mac."
       ) ;_end alert
   ) ;_end progn
   (alert "\nProgram Requires Two Selected Points.")
   ) ;_end if
   (*error* "")
) ;_end defun




gazzalp 发表于 2022-7-6 17:00:16

太棒了,李,你是冠军。唯一的问题是它不会插入块(你知道的,因为对话框会告诉我),我只想将块插入标注下,在标注的中间(只要它不与标注冲突,就可以)。这可能吗?谢谢你的帮助。

Lee Mac 发表于 2022-7-6 17:04:23

 
我可以补充一下,但块是存储在特定的文件路径下,还是仅存储在ACAD搜索目录中?如果在搜索目录中,我只需要块名,如果在其他地方,我需要块名和完整文件路径来添加到LISP。或者我可以把那部分留白让你填写。

gazzalp 发表于 2022-7-6 17:08:15

现在没有太多的时间来寻找它,但是如果你留下我需要填写的区域(可能用粗体字,比如在这里添加文件路径/名称),这样我就不用再麻烦你问它放在哪里了
页: [1] 2
查看完整版本: 偏移2行添加尺寸