乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 8|回复: 8

[编程交流] 添加街道名称和地址编号

[复制链接]

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 17:27:51 | 显示全部楼层 |阅读模式
你好
我需要建议/想法。
我上传了示例1。图纸
这是解释我需要建议的最简单的方法。
我的工作是设计电缆。我需要在图纸中输入的数据是cable_编号和connection_编号,我有办法做到这些。但是
 
以后,我还需要在excel表格中显示数据,如附件所示。我计划通过导出属性信息来实现。
 
现在,想象一下整个城镇,有很多不同的街道名称和门牌号。
我需要建议如何轻松地将现有土地基础图(街道名称、房屋编号)中的数据放入块中,因为我没有想到其他制作xls表的方法。
 
也许可以使用一些地理信息系统程序来完成,如果有人说服我这是可能的,我会学习它。
也许可以通过Lisp程序、例行公事。。。(这些是我的中文)
 
手工填写表格的方法是不填写街道名称和门牌号,只填写电缆数据。。。而且。。。打开excel并键入数据。
 
我希望你能给我一些建议/想法,告诉我如何用最简单的方法做这件事。
 
感谢Tnx思考一下。
示例1.xlsx
示例1.dwg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:38:37 | 显示全部楼层
相当容易需要一些时间,输入电缆编号,选择st名称,重复->选择房屋编号,放置块。另一种选择是先放置大量的方块,很好地排队等,然后重复->拣房子不,拣方块。
 
太阳出来了,我要去钓鱼。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:49:37 | 显示全部楼层
这是如此接近它有一个错误,有些时候你只是看不到它。匹配示例dwg。
 
  1. code fixed see next post
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:51:26 | 显示全部楼层
试试这个
 
  1. (vl-load-com)
  2. (defun c:HOUSE ( / cableno stname blkobj)
  3. (setq Connectno (Getint "\nConnection Number"))
  4. (setq Cableno (getstring "\nEnter Cable No"))
  5. (setq stname (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nPick Street Name")))))
  6. (while (/= nil (setq Hnum (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nSelect House number pick nothing to exit"))))))
  7.    (setq blkobj (vlax-ename->vla-object (car (entsel "\nPick House block"))))
  8.    (foreach att (vlax-invoke blkobj 'getattributes)
  9.        (if (= "STREET_NAME" (vla-get-tagstring att))
  10.        (vla-put-textstring att stname)
  11.        ) ; end if
  12.        (if (= "ADDRESS_NUMBER" (vla-get-tagstring att))
  13.        (vla-put-textstring att Hnum)
  14.        ) ; end if
  15.        (if (= "CABLE_NUMBER" (vla-get-tagstring att))
  16.        (vla-put-textstring att Cableno)
  17.        ) ; end if
  18.        (if (= "CONNECTION_NUMBER" (strcase (vla-get-tagstring att)))
  19.        (vla-put-textstring att (rtos Connectno 2 0))
  20.        ) ; end if
  21.     ) ; foreach
  22.     (setq Connectno (+ 1 Connectno))
  23. ) ;while
  24. (princ) ; exit neatly
  25. ) ; Defun
  26. (c:house) ;for testing remove after
回复

使用道具 举报

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:00:19 | 显示全部楼层
比加尔,
非常感谢。
 
您的代码是进一步增强想法的灵感来源。从中,我做了两个口吃。一个将拾取的文本中的房屋编号输入到属性中,另一个将拾取的文本中的街道名称输入到属性中。为此,不需要电缆材料属性。
我更改了你的代码,删除了我认为过多的代码。请不要笑。可能需要减少一些,但我不太理解,所以我只是让它对我有用,如下所示:
1、门牌号
  1. (vl-load-com)
  2. (defun c:Han ( / cableno stname blkobj)
  3. (while (/= nil (setq Hnum (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nSelect House number pick nothing to exit"))))))
  4.    (setq blkobj (vlax-ename->vla-object (car (entsel "\nPick House block"))))
  5.    (foreach att (vlax-invoke blkobj 'getattributes)
  6.       
  7.        (if (= "ADDRESS_NUMBER" (vla-get-tagstring att))
  8.        (vla-put-textstring att Hnum)
  9.        ) ; end if
  10.       
  11.     ) ; foreach
  12.    
  13. ) ;while
  14. (princ) ; exit neatly
  15. ) ; Defun
  16. (c:house) ;for testing remove after
  17. Now
  18. 2. street name
  19. Code:
  20. (vl-load-com)
  21. (defun c:hsn ( / cableno stname blkobj)
  22. (while (/= nil (setq Hnum (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nSelect House number pick nothing to exit"))))))
  23.    (setq blkobj (vlax-ename->vla-object (car (entsel "\nPick House block"))))
  24.    (foreach att (vlax-invoke blkobj 'getattributes)
  25.       
  26.        (if (= "STREET_NAME" (vla-get-tagstring att))
  27.        (vla-put-textstring att Hnum)
  28.        ) ; end if
  29.       
  30.     ) ; foreach
  31.    
  32. ) ;while
  33. (princ) ; exit neatly
  34. ) ; Defun
  35. (c:house) ;for testing remove after

 
拜托,你能为我再做一件事吗。制作第二个代码(街道地址)如下:
首先,我选择带有街道名称的文本,然后命令继续执行,我不需要再为街道名称选择源输入,只需要能够将其粘贴到多个块属性中。类似于MATCH属性的工作方式。您拾取源,然后所有单击都将相同的特性“粘贴”到不同的对象(在本例中为块)。
 
再一次,tnx!
回复

使用道具 举报

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:09:33 | 显示全部楼层
嗨,我做到了。我把WHILE循环,它的工作。
关于Lisp程序的阅读时间很长,但我做了一些工作。。。即使它改变了其他人的代码,但是。。。我很高兴
我必须承认,这对以后学习LISPing非常有激励作用。希望是时候了。再一次,tnx。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:19:11 | 显示全部楼层
不用担心,更改块属性相对简单。还有第二种方法,您只需使用属性创建顺序att1 att2等,并更改所需顺序,这样就不需要担心属性名称。Ps下次使用代码标签,这是#选项,否则管理员会跟踪你。
回复

使用道具 举报

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:22:50 | 显示全部楼层
对不起,我以为“代码:”就像“#”。很抱歉
 
  1. ;just wanna try it

 
我现在有个问题:我意识到了编程/组合LISP的可能性。现在我花了几个小时学习,浏览,阅读。。。幸运的是,我在度假
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:29:57 | 显示全部楼层
没有空格的[c o d e]和[c o d e]
 
重新度假始于1980年的lisp。但其他人就是那么聪明,一直在学习。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 04:13 , Processed in 0.704470 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表