suryacad 发表于 2022-7-5 22:20:51

无尽的中心线

您好,附图是梁布局图。
我想为所有梁画中心线。
还有12层同样大小
我讨厌做这样无聊的事情,虽然很耗时,但对我的工作来说同样重要。
任何加快这一进程的方法都会大有裨益。
非常感谢。
新建块。图纸

BIGAL 发表于 2022-7-5 22:24:58

在第一步中画三条线,将信用证放在不同的层上
 
这是一个lisp,它取一行并生成两条新行,只需删除擦除位,c/l将保留,只需编辑边缘光束大小的定义
 

; pipe offset for different size pipes
; by Alan H July 2014

(vl-load-com)
(defun trap (errmsg)
(prompt "\nAn error has occured.")
(setvar "osmode" oldsnap)
(setq *error* temperr)
)
(setq temperr *error*)
(setq *error* trap)
(setqdoc (vla-get-activedocument (vlax-get-acad-object))) ; open database
(defun loadLinetype (doc LineTypeName FileName)
(if (and
       (not (existLinetype doc LineTypeName))
       (vl-catch-all-error-p
         (vl-catch-all-apply
         'vla-load
         (list
             (vla-get-Linetypes doc)
             LineTypeName
             FileName
         )
         )
       )
   )
   nil
   T
)
)
(defun existLinetype (doc LineTypeName / item loaded)
(vlax-for item (vla-get-linetypes doc)
   (if (= (strcase (vla-get-name item)) (strcase LineTypeName))
   (setq loaded T)
   )
)
)
;load missing linetypes
;;; returns: T if loaded else nil
;(loadLinetype doc "EX_PIPE250" "custom.lin")
(defun pipeoffset (w / ang stpt pt3 pt4 obj whatis)
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)
(setq temperr *error*)
(setq *error* trap)
(setq obj (entsel "\nPick line"))
(setq objtype (vla-get-objectname (vlax-ename->vla-object (car obj))))
(if (= "AcDbLINE" objtype)
(progn
    (alert "You have picked an object which is not a line\nTry Again")
    (exit)
)
(princ "\nLine")
)
(setq stpt (assoc 10 (entget (car obj))))
(setq stpt (list (nth 1 stpt)(nth 2 stpt)))
(setq endpt (assoc 11 (entget (car obj))))
(setq endpt (list (nth 1 endpt)(nth 2 endpt)))
(setq ang (angle stpt endpt))
(setq pt3 (polar stpt (+ ang (/ pi 2.0)) 1.0))
(setq pt4 (polar stpt (- ang (/ pi 2.0)) 1.0))
(command "offset" w obj pt3 "")
;(Command "chprop" "last" "" "LT" "EX_PIPE250" "")
(command "offset" w obj pt4 "")
;(Command "chprop" "last" "" "LT" "EX_PIPE250" "")
;(command "Erase" obj "")
(setvar "osmode" oldsnap)
)

(defun c:P100 ()
(pipeoffset 0.06)
)
(defun c:P150 ()
(pipeoffset 0.08)
)
(defun c:P225 ()
(pipeoffset 0.152)
)
(defun c:P300 ()
(pipeoffset 0.19)
)
(defun c:P375 ()
(pipeoffset 0.228)
)
(defun c:P450 ()
(pipeoffset 0.265)
)
(defun c:P525 ()
(pipeoffset 0.302)
)
(defun c:P600 ()
(pipeoffset 0.34)
)
(defun c:P675 ()
(pipeoffset 0.34)
)
(defun c:P750 ()
(pipeoffset 0.415)
)
(defun c:P825 ()
(pipeoffset 0.455)
)
(defun c:P900 ()
(pipeoffset 0.49)
)
(defun c:P975 ()
(pipeoffset 0.528)
)
(defun c:P1050 ()
(pipeoffset 0.565)
)
(defun c:P1125 ()
(pipeoffset 0.6)
)
(defun c:P1200 ()
(pipeoffset 0.64)
)

(setq *error* temperr)
(princ)

SLW210 发表于 2022-7-5 22:31:22

看看这条线是否有你需要的东西http://www.cadtutor.net/forum/showthread.php?49709-两条多段线之间的中心线

suryacad 发表于 2022-7-5 22:33:29

对不起,迟来的回复伙计们,在施工现场工作的stuckup现在到了办公桌。
 
@BIGAL谢谢你,伙计,但我没能让它工作。已删除此部分
(命令“Erase”obj“”)
然后将这条线编辑为我的图纸中对应的梁尺寸。主要为230mm、300mm和1000mm
示例:将代码中的此行编辑为
(defun c:P450()至(defun c:P230()
(pipeoffset 0.265)保持这条线不变,认为必须改变。
 
将文本另存为。LSP加载了它并输入了p230,它要求我选一行,我想我用这几秒钟得到了一些,然后当我选择一个lin时,发生了一个错误。
用我的LISP语言加载和键入命令的技巧,我想我又回来求助了
 
 
@SLW210:谢谢,我在网上找到了一些Lisp程序的东西,它们和那条帖子上的Lisp程序非常相似。Lee mac的cpoly非常适合任何形状的多段线。在我的情况下,仅仅挑选第一行和第二行仍然很耗时。为了方便起见,我增加了拾取框的大小,但我仍然花费了大约半小时到45分钟。我想,能够用选框选择两行真的会有助于缩短时间。我已到达此页面
http://www.afralisp.net/autolisp/tutorials/selection-sets.php
希望学习和编辑字幕风格的选择,并意识到这需要更多的单

李。lsp

BIGAL 发表于 2022-7-5 22:38:04

问题是我使用特定的线型绘制的代码中的线型。我已经更改了它现在应该在当前线型中绘制的代码,请看带有分号的行;开始时。这个意味着评论和之后的内容不运行。

suryacad 发表于 2022-7-5 22:41:59

比加尔爵士我不明白你说什么

suryacad 发表于 2022-7-5 22:45:30

继续用李·麦克的Lisp程序做中线,但遇到了一个小问题。它适用于直线、曲线、斜线,但当我在有角度的连续多段线上使用它时,我会将角圆角。附上图片和下面的LISP代码。请帮忙。
 
(defun c:cPoly (/ ent1 ent2 i len pt p1 ptlst)
(vl-load-com)

(if (and (setq ent1 (car (entsel "\nSelect First Polyline: ")))
          (wcmatch (cdr (assoc 0 (entget ent1))) "*POLYLINE")
          (setq ent2 (car (entsel "\nSelect Second Polyline: ")))
          (wcmatch (cdr (assoc 0 (entget ent2))) "*POLYLINE"))
   (progn
   (setq i -1 len (/ (vla-get-Length
                         (vlax-ename->vla-object ent1)) 100.))
   
   (while (setq pt (vlax-curve-getPointatDist ent1 (* (setq i (1+ i)) len)))
       (setq p1    (vlax-curve-getClosestPointto ent2 pt t)
             ptlst (cons (polar pt (angle pt p1) (/ (distance pt p1) 2.)) ptlst)))
   
   (setq ptlst (apply (function append)
                        (mapcar
                        (function
                            (lambda (x) (list (car x) (cadr x)))) ptlst)))
   
   (vla-AddLightWeightPolyline
       (vla-get-ModelSpace
         (vla-get-ActiveDocument (vlax-get-acad-object)))
       (variant
         (vlax-safearray-fill
         (safearray vlax-VBDouble (cons 0 (1- (length ptlst)))) ptlst)))))

(princ))

SLW210 发表于 2022-7-5 22:48:10

请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。

marko_ribar 发表于 2022-7-5 22:53:46

查看此线程。。。顺便说一句,你必须有2011年以上。。。
 
http://www.cadtutor.net/forum/showthread.php?83644-两条多段线之间的中心线
 
M、 R。

suryacad 发表于 2022-7-5 22:57:52

谢谢你带我去看《马库里巴》,帮了我很大的忙
页: [1] 2
查看完整版本: 无尽的中心线