乐筑天下

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

[编程交流] 已解决-需要帮助从一组线中提取数据

[复制链接]

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-8-2 14:54:46 | 显示全部楼层 |阅读模式
你好,我想自动提取d

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-8-3 01:07:38 | 显示全部楼层
有几个问题是线总是1-x等,它们是按1->16的顺序绘制的,这意味着只需选择线并从一个数字开始,例如1。
  1. ; http://www.theswamp.org/index.php?topic=57753.0
  2. ; simple table example lines to table
  3. l By AlanH Aug 2022
  4. (defun rtd (a)
  5. (/ (* a 180.0) pi)
  6. )
  7. (defun pl-table ( / ss sp curspace tableobj k totlen x len ang rownum)
  8. (setq ss (ssget (list (cons 0 "LWPOLYLINE"))))
  9. (setq sp (vlax-3d-point (getpoint "\nPick point for top left of table ")))
  10. (Setq curspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  11. (setq tableobj (vla-addtable curspace sp 2 3 1 25))
  12. (vla-settext tableobj 0 0 "Heading")
  13. (vla-settext tableobj 1 0 "No.")
  14. (vla-settext tableobj 1 1 "Length")
  15. (vla-settext tableobj 1 2 "Angle")
  16. (setq k 0 totlen 0.0)
  17. (repeat (setq x (sslength ss))
  18.   (setq obj (vlax-ename->vla-object (ssname ss (setq x (1- x)))))
  19.   (setq totlen (+ totlen (vlax-get obj 'Length)))
  20.   (setq len (strcat (rtos (vlax-get obj 'Length) 2 2) " m"))
  21.   (setq ang (rtd (angle (vlax-curve-getstartPoint obj)(vlax-curve-getEndPoint obj))))
  22.   (if (> ang 180.0)
  23.     (setq ang (rtos (- ang 360.0) 2 0))
  24.     (setq ang (rtos ang 2 0))
  25.   )
  26.   (setq tableobj (vlax-ename->vla-object (entlast)))
  27.   (setq rownum (vla-get-rows tableobj))
  28.   (vla-InsertRows tableobj  rownum  (vla-GetRowHeight tableobj (- rownum 1)) 1)
  29.   (vla-settext tableobj rownum 0 (rtos (setq K (1+ k)) 2 0))
  30.   (vla-settext tableobj rownum 1 len)
  31.   (vla-settext tableobj rownum 2 ang)
  32. )
  33. (setq tableobj (vlax-ename->vla-object (entlast)))
  34. (setq rownum (vla-get-rows tableobj))
  35. (vla-InsertRows tableobj  rownum  (vla-GetRowHeight tableobj (- rownum 1)) 1)
  36. (vla-settext tableobj rownum 0  "Total")
  37. (vla-settext tableobj rownum 1 (strcat (rtos totlen 2 0) " m"))
  38. (princ)
  39. )
  40. (pl-table)

当它要求选择对象类型F并且可以在红线上拖动线时,按两次enter键结束选择,然后选择一个点。
回复

使用道具 举报

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-8-3 11:04:49 | 显示全部楼层
正是我所需要的Bigal,谢谢!
不知道您说的线总是1- x是什么意思
它们是按照从1到16的顺序绘制的,如果我必须一条一条地选择线以确保顺序与文本编号匹配,这没关系。
就我所知,我可以将具有-RTOS(/length/)2 X-的行改为增减小数,以便能够在总长度中得到一个小数。它需要一个c开头的defun,直到我调用它。我可以修改它。
但是它返回一个相反的顺序,我选择的第一行是表中的最后一行,我不知道需要修改哪一行才能使它成为第一个选择-表的第一行。
编辑:
与示例的情况不同,所以我没有检查右侧,但是如果线指向左侧(-x),它也应该只有0到90°的范围,如果低于水平线,则为0到-90°,
我将尝试自己修改它,但我不必抱太大期望代码1]
编辑2:
我这样做是为了角度,
  1.     (if (> ang 270.0)
  2.     (setq ang (rtos (+ -360 ang) 2 0))
  3.     (  if (> ang 90.0)
  4.     (setq ang (rtos (- 180 ang) 2 0))
  5.     (setq ang (rtos ang 2 0))
  6.   )

仍然不知道如何颠倒表格项目的顺序。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-8-3 22:02:18 | 显示全部楼层
线的列表在一个阶段被颠倒了,我认为这与它们被创建的顺序有关,我没有仔细检查。有几种方法可以从第一个项目或最后一个项目向后处理选择集。也可能是选择顺序ie top -> bot或bot -> top在使用fence时没有检查。
(repeat(setq x(ss length ss))
(setq obj(vlax-ename-> vla-object(ss name ss(setq x(1-x)))))
(setq x-1)
(repeat(ss length ss)
(setq obj(vlax-ename-> vla-object(ss name ss(setq x(1+x)))))
它的like版本1和你的版本2就ok了。
回复

使用道具 举报

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-8-4 01:12:31 | 显示全部楼层
我测试了具有类似套线但中创建
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-8-4 19:52:45 | 显示全部楼层
很高兴听到它的工作原理,它就像我做的很多事情一样“从左到右选择”,但如果以一个圆圈的方式,实际上可以从右到左,想想矩形的底部。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-5 01:41 , Processed in 0.609996 second(s), 69 queries .

© 2020-2025 乐筑天下

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