乐筑天下

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

[编程交流] 多边形线状提取lin

[复制链接]

44

主题

139

帖子

95

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-6 07:15:54 | 显示全部楼层 |阅读模式
我试着发现lisp可以提取一个或多个多段线形状或边界形状,也许它是矩形的,在一张桌子上,我希望我能找到。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:26:29 | 显示全部楼层
像这样的事情?
 
  1. (defun c:LW2tbL (/ hgt e insertionPoint tbl lengths selectionset integer selectionsetname)
  2. (vl-load-com)
  3. ;;; Tharwat 06 . Nov . 2012 ;;;
  4. (or acdoc (setq acdoc (vla-get-activedocument (vlax-get-acad-object))))
  5. (setq hgt (if (zerop (cdr (assoc 40 (setq e (entget (tblobjname "STYLE" (getvar 'textstyle)))))))
  6.              (* (getvar 'textsize) 2.0)
  7.              (cdr (assoc 40 e))
  8.            )
  9. )
  10. (if (setq lengths 0
  11.            selectionset
  12.             (ssget '((0 . "*POLYLINE")))
  13.      )
  14.    (repeat (setq integer (sslength selectionset))
  15.      (setq selectionsetname (ssname selectionset (setq integer (1- integer))))
  16.      (setq lengths (+ (vla-get-length (vlax-ename->vla-object selectionsetname)) lengths))
  17.    )
  18. )
  19. (if lengths
  20.    (progn (setq insertionPoint (getpoint "\n Specify Table Location :"))
  21.           (setq tbl (vla-addtable (vla-get-modelspace acdoc) (vlax-3d-point insertionPoint) 2 1 (* hgt 2.5) (* hgt 2.5)))
  22.           (vla-setcolumnwidth tbl 0 (* hgt 10.))
  23.           (vla-setrowheight tbl 0 (* hgt 1.5))
  24.           (vla-settext tbl 0 0 "\\C140;Total Lengths")
  25.           (vla-settext tbl 1 0 (rtos lengths 2))
  26.           (vla-setcellalignment tbl 1 0 acMiddleCenter)
  27.           (vla-setrowheight tbl 1 (* hgt 1.5))
  28.    )
  29. )
  30. (princ "\nWritten by Tharwat Al Shoufi")
  31. (princ)
  32. )
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-6 07:29:40 | 显示全部楼层
非常感谢tharwat先生,但如果我能为每个形状内容2个长度的单元格。
再次感谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:38:11 | 显示全部楼层
 
不客气。
 
你所说的每个形状内容是什么意思?
 
您可以发布表的快照吗?
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-6 07:43:40 | 显示全部楼层
亲爱的塔瓦特先生,感谢您的支持。
我的意思是*每个形状的内容*根据附件,我需要为一个单元格上的形状提取单独的长度。
081557ybzwajggfgzollt7.jpg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:48:32 | 显示全部楼层
这里它适用于闭合多段线,其中一个字符串表示每个多段线的引用。。
 
  1. (defun c:LW2Table (/ *error* lengths_Widths_Strings WriteAndSet e hgt i p lst r ss tbl) (vl-load-com)
  2. ;; Author : Tharwat Al Shoufi . Date: 07. Nov. 2012    ;;;
  3. ;; Sample of strings to be inserted into Table    ;;;
  4. ;; (("S1" 3.48952 4.81861) ("S2" 3.48952 3.70302)    ;;;
  5. (defun *error (x) (princ "\n....") (princ "\n *Cancel*"))
  6. (or acdoc (setq acdoc (vla-get-activedocument (vlax-get-acad-object))))
  7. (setq hgt (if (zerop (cdr (assoc 40 (setq e (entget (tblobjname "STYLE" (getvar 'textstyle)))))))
  8.              (* (getvar 'textsize) 2.0)
  9.              (cdr (assoc 40 e))
  10.            )
  11. )
  12. (defun lengths_Widths_Strings (sn / pts l w ss)
  13.    (mapcar '(lambda (x)
  14.               (if (eq (car x) 10)
  15.                 (setq pts (cons (list (cadr x) (caddr x)) pts))
  16.               )
  17.             )
  18.            (entget sn)
  19.    )
  20.    (setq l (distance (nth 0 pts) (nth 1 pts)))
  21.    (setq w (distance (nth 1 pts) (nth 2 pts)))
  22.    (if (setq ss (ssget "_wp" pts '((0 . "*TEXT"))))
  23.      (setq lst (cons (list (cdr (assoc 1 (entget (ssname ss 0)))) l w) lst))
  24.    )
  25.    (setq ss nil)
  26.    lst
  27. )
  28. (defun WriteAndSet (table col row string hgt wid)
  29.    (vla-settext table row col string)
  30.    (vla-setcellalignment table row col acMiddleCenter)
  31.    (vla-setrowheight table row (* hgt 1.5))
  32.    (vla-setcolumnwidth table col wid)
  33. )
  34. (if (setq ss (ssget '((0 . "*POLYLINE") (-4 . "&=") (70 . 1))))
  35.    (repeat (setq i (sslength ss)) (lengths_Widths_Strings (ssname ss (setq i (1- i)))))
  36. )
  37. (if lst
  38.    (progn (setq p (getpoint "\n Specify Table Location :"))
  39.           (setq tbl (vla-addtable
  40.                       (vla-get-modelspace acdoc)
  41.                       (vlax-3d-point p)
  42.                       (1+ (length lst))
  43.                       3
  44.                       (* hgt 2.5)
  45.                       (* hgt 2.5)
  46.                     )
  47.           )
  48.           (vla-setcolumnwidth tbl 0 (* hgt 10.))
  49.           (vla-setrowheight tbl 0 (* hgt 1.5))
  50.           (vla-settext tbl 0 0 "\\C140;Total Lengths")
  51.           (setq r 0)
  52.           (setq lst (vl-sort lst '(lambda (a b) (< (atof (substr (car a) 2)) (atof (substr (car b) 2))))))
  53.           (foreach x lst
  54.             (WriteAndSet tbl 0 (setq r (1+ r)) (car x) hgt (* (* hgt 10.) 0.2))
  55.             (WriteAndSet tbl 1 r (rtos (cadr x) 2) hgt (* (* hgt 10.) 0.4))
  56.             (WriteAndSet tbl 2 r (rtos (caddr x) 2) hgt (* (* hgt 10.) 0.4))
  57.           )
  58.    )
  59. )
  60. (princ "\nWritten by Tharwat Al Shoufi")
  61. (princ)
  62. )
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-6 07:54:04 | 显示全部楼层
081559jq4s7qf0n4ncshs7.jpg
 
 
亲爱的Tharwat先生,非常感谢,非常好。
但是我还有一件事,我希望我们可以在lisp上完成,根据附件,我们可以找到不规则形状,如果可能的话,在不规则的名称上放一个类似星号的符号,并计算每个名称。
再次感谢tharwat先生
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:01:50 | 显示全部楼层
您已经三次改变您的观点,很抱歉,由于无法正确确定长度和宽度,最后一个附加图像中的多段线不包括在内。
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-6 08:07:30 | 显示全部楼层
再一次,我想说对不起,但正如你们所知道的,当你们第一次思考一个想法时,并不像第二次那样,你们已经达到了这个想法,你们知道我们的领域在不停地改进。
我希望你可以添加条件来捕捉非法形状。
谢谢
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-6 08:10:08 | 显示全部楼层
http://www.cadtutor.net/forum/showthread.php?12536-文本或块计数
请允许我用这个Lisp程序为形状名称添加计数器。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 09:48 , Processed in 0.420983 second(s), 74 queries .

© 2020-2025 乐筑天下

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