lisp在midp处放置“点”
我们一直在管件的中点手动放置控制点。“点”实际上是一个小CADMEP对象。我们这样做是为了导出到机器人站,以便在现场标记位置。我一直在尝试修改我发现的lisp,以自动放置“点”。我想做的是在图形中放置一个点,并将其复制到所有选定配件的中点。我只是没有掌握我需要做什么得到配件的中点,要么复制或插入“点”。我已经附上了我试图修改的lisp。有人能给我指出正确的方向吗?
复制粘贴测试。lsp
hi pipefitter72高
欢迎来到论坛
我假设你的管道是直线物体。。
(defun c:Test1 (/ *error* ss s p i e cm es)
(defun *error* (x)
(if cm
(setvar 'cmdecho cm)
) ;_ end of if
(princ "\n*Cancel*")
) ;_ end of defun
(if (and (setq ss (ssget))
;;; (setq ss (osnap (cadr es) "mid"));<---- incorrect due ss not consp
(setq s (ssget "_:L"))
(setq p (getpoint "\n Specify base point :"))
) ;_ end of and
(progn (setq cm (getvar 'cmdecho))
(setvar 'cmdecho 0)
(command "_._copybase" "_non" p s "")
(repeat (setq i (sslength ss))
(setq e (entget (ssname ss (setq i (1- i)))))
;;; (foreach pt e
;;; (if (eq (car pt) 10)
;;; (command "_.pasteclip" (cdr pt))
;;; )
;;; )
;;suggest by hanhphuc (for line only)
(if (eq (cdr (assoc 0 e)) "LINE") ;<--- assume the pipe object is line
(command "_.pasteclip"
(apply 'mapcar
(cons ''((a b) (/ (+ a b) 2.)) (mapcar ''((x) (cdr (assoc x e))) '(10 11)))
) ;_ end of apply
) ;_ end of command
) ;_ end of if
) ;_ end of repeat
(setvar 'cmdecho cm)
) ;_ end of progn
) ;_ end of if
) ;_ end of defun
我明天早上试试。 你能发布一个带有一些样本的dwg吗?请用文本命名,以防代理对象不出现,也可以是一个图像。 在帖子的早些时候,我发布了一个屏幕截图。我在dropbox上贴了两个链接。一个用于2014年dwg,另一个是2007年格式的相同dwg。如果您没有MEP,则可能必须从网站为您的autocad版本安装MEP对象启用程序。
http://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/ENU/123112/files/autocad-object-enablers-html.html Dumpit结果
选择对象:;IMapsComWrap:IMapsComWrap接口
; 属性值:
; 应用(RO)=#
; 面积=0.0
; CustomData=“GPM-千瓦/步长-百叶窗自由面积=0.0,电机HP=,泵叶轮=,设备标签(全部)=,最大/最小CFM-CFM=,型号#=,电机机架=,PIU风扇CFM-泵头=,制造商=Weldbend,垂直/水平FD-电压/PH=,说明-FD检修门=,L?”
; Description=“S40 LR 90”
; 文件(RO)=#
; 标高=“CL=10'-8”
; EndSize=“BE 3,BE 3,”
; EntityTransparency=“ByLayer”
; 手柄(RO)=“1009A”
; HasExtensionDictionary(RO)=0
; 超链接(RO)=#
; ItemNumber=“4”
; 层=“MP-JTFR”
; 长度角=90.0
; 线型=“BYLAYER”
; 线型比例=1.0
; 线宽=-1
; 材料=“ByLayer”
; 注释=“”
; 目标ID(RO)=42
; 目标32(RO)=42
; ObjectName(RO)=“MapsContainer”
; 所有者ID(RO)=43
; 所有者32(RO)=43
; PlotStyleName=“ByLayer”
; 点=“端点:19670.488807.071328.00;19665.988802.571328.00;中点:19665.988807.071328.00”
; 章节=“1级”
; ServiceName=“JTFR Anvil2Thrd150MIxS40”
; 状态=“0:设计”
选择对象:;真彩色=#
; 可见=-1
; 重量=4.8
命令: 转储提供了一些线索“点”是方便的绘制一条线,使用关键字,看看它适合确保捕捉关闭,缩放相同的对象2倍,看看线的长度是两倍。比较两个旋转90度的物体,看“长度角”是否变化。如果你把物体看作一个块,那么就有可能计算出你需要的中间点。
你们有一个叫JTFR Anvil2Thd150Mixs40的方块吗? 谢谢你,BIGAL,虽然我在这个线程中帮不上忙,但我很好奇,如果我们能处理代理对象,它可能会有用
如图所示,点类型为“STR”,可能“…中点:19665.988807.071328.00”是关键? 只是想知道您是否试用过Autodesk point layout软件?
http://knowledge.autodesk.com/support/autocad/learn-explore/caas/blog/beyonddesign.typepad.com/posts/2014/06/point-layout-2015-is-here.html
我不知道花了多少钱,但他们确实有试用版。我们仍然是卷尺和细绳,所以尺寸是我使用的全部。我看到其他行业在最后几项工作中都使用全站仪。 他们一直在研究points软件,我们会看到,
页:
[1]
2