添加街道名称和地址编号
你好我需要建议/想法。
我上传了示例1。图纸
这是解释我需要建议的最简单的方法。
我的工作是设计电缆。我需要在图纸中输入的数据是cable_编号和connection_编号,我有办法做到这些。但是
以后,我还需要在excel表格中显示数据,如附件所示。我计划通过导出属性信息来实现。
现在,想象一下整个城镇,有很多不同的街道名称和门牌号。
我需要建议如何轻松地将现有土地基础图(街道名称、房屋编号)中的数据放入块中,因为我没有想到其他制作xls表的方法。
也许可以使用一些地理信息系统程序来完成,如果有人说服我这是可能的,我会学习它。
也许可以通过Lisp程序、例行公事。。。(这些是我的中文)
手工填写表格的方法是不填写街道名称和门牌号,只填写电缆数据。。。而且。。。打开excel并键入数据。
我希望你能给我一些建议/想法,告诉我如何用最简单的方法做这件事。
感谢Tnx思考一下。
示例1.xlsx
示例1.dwg 相当容易需要一些时间,输入电缆编号,选择st名称,重复->选择房屋编号,放置块。另一种选择是先放置大量的方块,很好地排队等,然后重复->拣房子不,拣方块。
太阳出来了,我要去钓鱼。 这是如此接近它有一个错误,有些时候你只是看不到它。匹配示例dwg。
code fixed see next post
试试这个
(vl-load-com)
(defun c:HOUSE ( / cableno stname blkobj)
(setq Connectno (Getint "\nConnection Number"))
(setq Cableno (getstring "\nEnter Cable No"))
(setq stname (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nPick Street Name")))))
(while (/= nil (setq Hnum (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nSelect House number pick nothing to exit"))))))
(setq blkobj (vlax-ename->vla-object (car (entsel "\nPick House block"))))
(foreach att (vlax-invoke blkobj 'getattributes)
(if (= "STREET_NAME" (vla-get-tagstring att))
(vla-put-textstring att stname)
) ; end if
(if (= "ADDRESS_NUMBER" (vla-get-tagstring att))
(vla-put-textstring att Hnum)
) ; end if
(if (= "CABLE_NUMBER" (vla-get-tagstring att))
(vla-put-textstring att Cableno)
) ; end if
(if (= "CONNECTION_NUMBER" (strcase (vla-get-tagstring att)))
(vla-put-textstring att (rtos Connectno 2 0))
) ; end if
) ; foreach
(setq Connectno (+ 1 Connectno))
) ;while
(princ) ; exit neatly
) ; Defun
(c:house) ;for testing remove after
比加尔,
非常感谢。
您的代码是进一步增强想法的灵感来源。从中,我做了两个口吃。一个将拾取的文本中的房屋编号输入到属性中,另一个将拾取的文本中的街道名称输入到属性中。为此,不需要电缆材料属性。
我更改了你的代码,删除了我认为过多的代码。请不要笑。可能需要减少一些,但我不太理解,所以我只是让它对我有用,如下所示:
1、门牌号
(vl-load-com)
(defun c:Han ( / cableno stname blkobj)
(while (/= nil (setq Hnum (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nSelect House number pick nothing to exit"))))))
(setq blkobj (vlax-ename->vla-object (car (entsel "\nPick House block"))))
(foreach att (vlax-invoke blkobj 'getattributes)
(if (= "ADDRESS_NUMBER" (vla-get-tagstring att))
(vla-put-textstring att Hnum)
) ; end if
) ; foreach
) ;while
(princ) ; exit neatly
) ; Defun
(c:house) ;for testing remove after
Now
2. street name
Code:
(vl-load-com)
(defun c:hsn ( / cableno stname blkobj)
(while (/= nil (setq Hnum (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nSelect House number pick nothing to exit"))))))
(setq blkobj (vlax-ename->vla-object (car (entsel "\nPick House block"))))
(foreach att (vlax-invoke blkobj 'getattributes)
(if (= "STREET_NAME" (vla-get-tagstring att))
(vla-put-textstring att Hnum)
) ; end if
) ; foreach
) ;while
(princ) ; exit neatly
) ; Defun
(c:house) ;for testing remove after
拜托,你能为我再做一件事吗。制作第二个代码(街道地址)如下:
首先,我选择带有街道名称的文本,然后命令继续执行,我不需要再为街道名称选择源输入,只需要能够将其粘贴到多个块属性中。类似于MATCH属性的工作方式。您拾取源,然后所有单击都将相同的特性“粘贴”到不同的对象(在本例中为块)。
再一次,tnx! 嗨,我做到了。我把WHILE循环,它的工作。
关于Lisp程序的阅读时间很长,但我做了一些工作。。。即使它改变了其他人的代码,但是。。。我很高兴
我必须承认,这对以后学习LISPing非常有激励作用。希望是时候了。再一次,tnx。 不用担心,更改块属性相对简单。还有第二种方法,您只需使用属性创建顺序att1 att2等,并更改所需顺序,这样就不需要担心属性名称。Ps下次使用代码标签,这是#选项,否则管理员会跟踪你。 对不起,我以为“代码:”就像“#”。很抱歉
;just wanna try it
我现在有个问题:我意识到了编程/组合LISP的可能性。现在我花了几个小时学习,浏览,阅读。。。幸运的是,我在度假 没有空格的和
重新度假始于1980年的lisp。但其他人就是那么聪明,一直在学习。
页:
[1]