乐筑天下

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

[编程交流] 通过编码连接点

[复制链接]

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:55:18 | 显示全部楼层 |阅读模式
你好
我想知道是否有任何方法(lisp或程序)通过以下代码连接点(在块中)。例如,我有点1,2,3。。。。,每个点都有一个代码,开始代码是K01(对于点1),然后是K(对于点2),K(对于点3),K(对于点4)。。。。,闭合点代码为K02。我想通过以下规则自动连接具有相同代码(K)的点,例如K01打开多段线,K02关闭多段线,中间是K。
并将此规则应用于任何其他代码(L、M、XXX、YYY…)
上的示例。dwg和中的点。txt在附件中。
测试。dxf
测试。txt文件
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 20:06:41 | 显示全部楼层
是否要使用三维多段线连接它们?还是2D?
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:12:03 | 显示全部楼层
二维多段线
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:16:21 | 显示全部楼层
点是3d的,所以如果在3d中不容易,我就把它们展平
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 20:22:38 | 显示全部楼层
好的,这是3DPOLY,因为点是3D的。。。请注意,块插入点必须与所需的三维点匹配。。。
 
  1. (defun c:connectbyattriborder ( / bn ss kod broj i bl blatt tag val att atts bll bllst bllstn p pl )
  2. (setq bn (getstring "\nUnesite ime bloka sa podatcima koji opisuju 3D tacku (TOCKA) : "))
  3. (prompt "\nSelektuj tacke/blokove...")
  4. (setq ss (ssget (list '(0 . "INSERT") (cons 2 bn))))
  5. (setq kod (getstring "\nUnesite opis atributa KOD (za XXX vrednost spajam XXX1, XXX, XXX, ..., XXX2) : "))
  6. (setq broj (getstring "\nUnesite opis atributa BROJ (za prthodno uneti kod spajam 1,2,3,...) : "))
  7. (repeat (setq i (sslength ss))
  8.    (setq bl (ssname ss (setq i (1- i))))
  9.    (setq blatt bl)
  10.    (while (/= (cdr (assoc 0 (entget (setq blatt (entnext blatt))))) "SEQEND")
  11.      (if (eq (cdr (assoc 0 (entget blatt))) "ATTRIB")
  12.        (progn
  13.          (setq tag (cdr (assoc 2 (entget blatt))))
  14.          (setq val (cdr (assoc 1 (entget blatt))))
  15.          (setq att (list tag val))
  16.          (setq atts (cons att atts))
  17.        )
  18.      )
  19.    )
  20.    (setq atts (vl-sort atts '(lambda ( a b ) (> (vl-string-search kod (cadr a)) (vl-string-search kod (cadr b))))))
  21.    (setq atts (append (list (car atts)) (vl-sort (vl-remove (car atts) atts) '(lambda ( a b ) (> (eq broj (car a)) (eq broj (car b)))))))
  22.    (setq bll (cons bl atts))
  23.    (setq bllst (cons bll bllst))
  24.    (setq atts nil)
  25. )
  26. (foreach bl bllst
  27.    (if (or (eq kod (cadr (cadr bl))) (eq (strcat kod "01") (cadr (cadr bl))) (eq (strcat kod "02") (cadr (cadr bl))))
  28.      (setq bllstn (cons bl bllstn))
  29.    )
  30. )
  31. (setq bllstn (vl-sort bllstn '(lambda ( a b ) (< (atoi (cadr (caddr a))) (atoi (cadr (caddr b)))))))
  32. (foreach bl bllstn
  33.    (setq p (cdr (assoc 10 (entget (car bl)))))
  34.    (setq pl (cons p pl))
  35. )
  36. (setq pl (reverse pl))
  37. (command "_.3DPOLY")
  38. (foreach p pl
  39.    (command "_non" p)
  40. )
  41. (command "")
  42. (princ)
  43. )
HTH,M.R。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 20:30:51 | 显示全部楼层
djercic,代码已更新。。。
 
重新思考-如果您有“K”和“KW”KOD标记值(“K”是“KW”字符串的一部分),那么我的修订例程现在应该可以正常运行了。。。顺便说一句,“K01”和“K02”标记并不重要,只要相同的值(“K”)块具有正确的BROJ标记,具有正确的值“1”、“2”。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:32:34 | 显示全部楼层
Marko从事测量工作多年,我曾多次提到spagetti理论,即连接“字符串”,这是CIV3d等的日常工作。我发表评论的原因是,示例文本文件中使用的方法不是一种很好的方法,我们的测量师自80年代以来就使用了字符串,这不是什么新鲜事,基本上,用一个通用代码串相似的线,但即使使用相同的id代码(例如01EB、02EB),也会以某种方式区分项目。这将是沥青的两条道路边缘,不需要开始和结束编码,并且线在单层EB上,EB或00EB将是一个点。然后我们进入智能编码03EB*s 03EB 03EB*s,它将基于这3个点绘制一条弧,04EB*22LM这是线eb,现在在一个不同的字符串上有一个起点,在这种情况下,线标记为道路边缘。第二部分是基于点描述插入块。
 
最后,我做了几次尝试,我能想到的最接近的方法是根据代码对所有调查点进行两次排序,第一次是根据每个代码的点数进行排序,第二次是根据每个代码的点数进行排序,然后像你发布的那样做。我会找到一些样本文件。
 
205519x9usy9em99ut1w4d.jpg
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:37:22 | 显示全部楼层
很抱歉这么晚才回复,我在现场。
Marko谢谢你的代码,但我正在寻找更自动化的东西,因为我计划测量aprox。100公里的道路和基础设施,道路附近的物体,我需要一些东西用相同的代码连接点,更像比加尔的例子。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:46:04 | 显示全部楼层
我跳过了使用CIV3D来看看这个产品“Stringer”www.civilsurveysolutions。通用域名格式。au做了很多事情,除了连接字符串。
这是一个仪器转储,如果您查看CO=这是编码308点id 00=点,30889=308点id字符串89 626190=626点id字符串190,我们的测量员走字符串,所以相同的点代码(实际上不是真正的徕卡仪器有智能,让他们做道路横截面,并保留代码,因为他们选择了一个点序列)的家伙只是从字符串01开始,并继续加1,每次他们去一个新的字符串对象,01 L,02 CL 03 R,他们有一个999的限制从来没有问题。
 
  1. SS        ID=1039, HA=145.4458, VA=90.2351, SD=32.972, HT=1.527, CO=308000
  2. SS        ID=1040, HA=146.3534, VA=90.1318, SD=33.725, HT=1.527, CO=310000
  3. SS        ID=1041, HA=165.5847, VA=90.0843, SD=38.092, HT=1.527, CO=308000
  4. SS        ID=1042, HA=178.5723, VA=90.0755, SD=37.205, HT=1.527, CO=308000
  5. SS        ID=1043, HA=180.5404, VA=90.0002, SD=35.383, HT=1.527, CO=310000
  6. SS        ID=1044, HA=183.1014, VA=90.2335, SD=30.423, HT=1.527, CO=PLUG000
  7. SS        ID=1045, HA=196.5235, VA=90.1832, SD=29.785, HT=1.527, CO=310000
  8. SS        ID=1046, HA=197.2032, VA=90.2714, SD=28.790, HT=1.527, CO=308000
  9. SS        ID=1047, HA=202.2400, VA=90.5045, SD=21.041, HT=1.527, CO=308089
  10. SS        ID=1048, HA=203.0942, VA=90.3956, SD=20.367, HT=1.527, CO=308089
  11. SS        ID=1049, HA=206.2914, VA=90.3803, SD=20.928, HT=1.527, CO=308089
  12. SS        ID=1050, HA=205.3751, VA=90.5208, SD=21.611, HT=1.527, CO=308089
  13. SS        ID=1051, HA=181.4741, VA=90.2950, SD=14.414, HT=1.527, CO=503000
  14. SS        ID=1052, HA=211.1759, VA=90.2506, SD=13.705, HT=1.527, CO=713000
  15. SS        ID=1053, HA=137.1904, VA=90.1409, SD=21.707, HT=1.527, CO=NAIL000
  16. SS        ID=1054, HA=123.3404, VA=90.0347, SD=28.530, HT=1.527, CO=626190
  17. SS        ID=1055, HA=131.5848, VA=90.0456, SD=23.592, HT=1.527, CO=626190
  18. SS        ID=1056, HA=136.3813, VA=90.1608, SD=21.640, HT=1.527, CO=626190
  19. SS        ID=1057, HA=136.2451, VA=90.1456, SD=19.895, HT=1.527, CO=626190
  20. SS        ID=1058, HA=135.4628, VA=90.0808, SD=17.944, HT=1.527, CO=626190
  21. SS        ID=1059, HA=117.4901, VA=90.0537, SD=14.068, HT=1.527, CO=626190
  22. SS        ID=1060, HA=88.1957, VA=90.1204, SD=12.463, HT=1.527, CO=626190
  23. SS        ID=1061, HA=89.0946, VA=90.1521, SD=14.736, HT=1.527, CO=626190
  24. SS        ID=1062, HA=90.0938, VA=90.1318, SD=17.603, HT=1.527, CO=626190
  25. SS        ID=1063, HA=96.0436, VA=90.1239, SD=19.824, HT=1.527, CO=626190
  26. SS        ID=1064, HA=91.2518, VA=90.0610, SD=20.198, HT=1.527, CO=903102
  27. SS        ID=1065, HA=89.1502, VA=90.0558, SD=19.355, HT=1.527, CO=903102
  28. SS        ID=1066, HA=74.4146, VA=90.0652, SD=16.340, HT=1.527, CO=903102
  29. SS        ID=1067, HA=69.5743, VA=90.0719, SD=15.962, HT=1.527, CO=903102
  30. SS        ID=1068, HA=61.0934, VA=90.1022, SD=15.898, HT=1.527, CO=903102
  31. SS        ID=1069, HA=54.5358, VA=90.0828, SD=16.275, HT=1.527, CO=903102
  32. SS        ID=1070, HA=48.2317, VA=90.0938, SD=17.127, HT=1.527, CO=903102
  33. SS        ID=1071, HA=43.4240, VA=90.1619, SD=18.110, HT=1.527, CO=903102
  34. SS        ID=1072, HA=39.4505, VA=90.0414, SD=19.311, HT=1.527, CO=903102
  35. SS        ID=1073, HA=34.0308, VA=90.0803, SD=21.975, HT=1.527, CO=903102
  36. SS        ID=1074, HA=41.2226, VA=90.0958, SD=18.644, HT=1.527, CO=626189
  37. SS        ID=1075, HA=59.3526, VA=90.0450, SD=14.294, HT=1.527, CO=626189
  38. SS        ID=1076, HA=63.4030, VA=90.1147, SD=14.307, HT=1.527, CO=626189
  39. SS        ID=1077, HA=70.3118, VA=90.1645, SD=14.433, HT=1.527, CO=626189
  40. SS        ID=1078, HA=74.4521, VA=90.1956, SD=14.732, HT=1.527, CO=626189
  41. SS        ID=1079, HA=77.1217, VA=90.2100, SD=14.937, HT=1.527, CO=626189
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:55:09 | 显示全部楼层
civ3d中的更多答案需要做一些关于外业手簿导入的家庭工作,它会做你想要的。
205521em0dg0egjc0mhm1j.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 00:57 , Processed in 0.925066 second(s), 74 queries .

© 2020-2025 乐筑天下

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