乐筑天下

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

[编程交流] 我需要一些帮助,创建选项卡

[复制链接]

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:57:18 | 显示全部楼层 |阅读模式
大家好,
我是新来的,我需要一些帮助,
我想画一条线,(它是一种剖面),然后应该用多段线或带计数的线图层生成一个表,我已经用Mechanical using Section和dx完成了,但我需要用lisp更快,我可以用table或block,所以当我插入它时,应该需要第一个点,然后是第二个点,并在一个带计数的框中给我所有图层名称,
请原谅我的英语,
请参见下图
085719kzhvvuetmrohm1wq.jpg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:02:09 | 显示全部楼层
欢迎来到Cadtutor
 
 
这一节是关于什么的?它由什么组成?
 
如果你用英语展示表格,大家都会看得更清楚
 
你能上传那个部分的图纸吗?
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:06:48 | 显示全部楼层
085721c3z8w5k8m5ckm8kc.jpg
你说得对,这是一个新的英文截图,
故事是这样的,
我为我使用的每根电缆使用层名称,例如,NYY 5x10mm2是层名称,NYY 5x10mm2也是,
根据我的图纸,从A-B中,我有许多电缆,9FTP Cat5 1NYY 5x10,1NYY 3x120+70+1x90mm2 2NYY 5x16等,因此,我想选择2点(A-B),例如,
第二幅图显示了所有通过2个点(模型空间)的线,所以现在我必须从一个检修孔到另一个检修孔,向工作现场的伙计们演示,并告诉他们管道将如何进行,
 
截面是一条简单的多段线,与其他多段线相交,
 
085722g2v2d8xdx0v1v1a1.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:09:15 | 显示全部楼层
这应该让你开始:
 
  1. ([color=BLUE]defun[/color] c:LineCount ( [color=BLUE]/[/color] a b i l p q s )
  2.    ([color=BLUE]if[/color]
  3.        ([color=BLUE]and[/color]
  4.            ([color=BLUE]setq[/color] p ([color=BLUE]getpoint[/color] [color=MAROON]"\nPick 1st Point: "[/color]))
  5.            ([color=BLUE]setq[/color] q ([color=BLUE]getpoint[/color] [color=MAROON]"\nPick 2nd Point: "[/color] p))
  6.        )
  7.        ([color=BLUE]if[/color] ([color=BLUE]setq[/color] s ([color=BLUE]ssget[/color] [color=MAROON]"_F"[/color] ([color=BLUE]list[/color] p q) '((0 . [color=MAROON]"*LINE"[/color]))))
  8.            ([color=BLUE]progn[/color]
  9.                ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] i ([color=BLUE]sslength[/color] s))
  10.                    ([color=BLUE]setq[/color] a ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 8 ([color=BLUE]entget[/color] ([color=BLUE]ssname[/color] s ([color=BLUE]setq[/color] i ([color=BLUE]1-[/color] i)))))))
  11.                    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] b ([color=BLUE]assoc[/color] a l))
  12.                        ([color=BLUE]setq[/color] l ([color=BLUE]subst[/color] ([color=BLUE]list[/color] a ([color=BLUE]1+[/color] ([color=BLUE]cadr[/color] b))) b l))
  13.                        ([color=BLUE]setq[/color] l ([color=BLUE]cons[/color]  ([color=BLUE]list[/color] a 1) l))
  14.                    )
  15.                )
  16.                ([color=BLUE]terpri[/color])
  17.                ([color=BLUE]princ[/color] (LM:PadBetween [color=MAROON]"\nLayer"[/color] [color=MAROON]"Count"[/color] [color=MAROON]"."[/color] 40))
  18.                ([color=BLUE]princ[/color] (LM:PadBetween [color=MAROON]"\n"[/color] [color=MAROON]""[/color] [color=MAROON]"="[/color] 40))
  19.                ([color=BLUE]foreach[/color] x ([color=BLUE]vl-sort[/color] l '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]<[/color] ([color=BLUE]cadr[/color] a) ([color=BLUE]cadr[/color] b))))
  20.                    ([color=BLUE]princ[/color] (LM:PadBetween ([color=BLUE]strcat[/color] [color=MAROON]"\n "[/color] ([color=BLUE]car[/color] x)) ([color=BLUE]itoa[/color] ([color=BLUE]cadr[/color] x)) [color=MAROON]"."[/color] 40))
  21.                )
  22.                ([color=BLUE]textpage[/color])
  23.            )
  24.            ([color=BLUE]princ[/color] [color=MAROON]"\nNo lines found between selected points."[/color])
  25.        )
  26.    )
  27.    ([color=BLUE]princ[/color])
  28. )
  29. [color=GREEN];;---------------------=={ Pad Between }==--------------------;;[/color]
  30. [color=GREEN];;                                                            ;;[/color]
  31. [color=GREEN];;  Returns a string of a minimum specified length which is   ;;[/color]
  32. [color=GREEN];;  the concatenation of two supplied strings padded to a     ;;[/color]
  33. [color=GREEN];;  desired length using a supplied character.                ;;[/color]
  34. [color=GREEN];;------------------------------------------------------------;;[/color]
  35. [color=GREEN];;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;[/color]
  36. [color=GREEN];;------------------------------------------------------------;;[/color]
  37. [color=GREEN];;  Arguments:                                                ;;[/color]
  38. [color=GREEN];;  s1,s2 - strings to be concatenated                        ;;[/color]
  39. [color=GREEN];;  ch    - character for padding                             ;;[/color]
  40. [color=GREEN];;  ln    - minimum length of returned string                 ;;[/color]
  41. [color=GREEN];;------------------------------------------------------------;;[/color]
  42. [color=GREEN];;  Returns:  Concatenation of s1,s2 padded to a min length   ;;[/color]
  43. [color=GREEN];;------------------------------------------------------------;;[/color]
  44. ([color=BLUE]defun[/color] LM:PadBetween ( s1 s2 ch ln )
  45.    (
  46.        ([color=BLUE]lambda[/color] ( a b c )
  47.            ([color=BLUE]repeat[/color] ([color=BLUE]-[/color] ln ([color=BLUE]length[/color] b) ([color=BLUE]length[/color] c)) ([color=BLUE]setq[/color] c ([color=BLUE]cons[/color] a c)))
  48.            ([color=BLUE]vl-list->string[/color] ([color=BLUE]append[/color] b c))
  49.        )
  50.        ([color=BLUE]ascii[/color] ch)
  51.        ([color=BLUE]vl-string->list[/color] s1)
  52.        ([color=BLUE]vl-string->list[/color] s2)
  53.    )
  54. )
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:10:31 | 显示全部楼层
喜欢它!
但是..!!:-)
如何在绘图时显示我选择的点?我想展示一下我从哪一点找到了这些数据?
 
这是一个通过我决定的点的多段线的报告,我希望我现在可以给你更多的例子,我在工作,我在思考如何使它从清晨!!!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:15:47 | 显示全部楼层
我的版本和我的方式。。。。
 
  1. (defun c:Test (/ entities i number integer layers lst object point1
  2.               point2 result selectionset selectionsetname singlelayer
  3.              )
  4. ;;; Tharwat 15. May. 2012 ;;;
  5. (if (and (setq point1 (getpoint "\n Specify first point :"))
  6.           (setq point2 (getpoint point1 "\n Specify Second point :"))
  7.           (setq selectionset
  8.                  (ssget "_F"
  9.                         (list point1 point2)
  10.                         '((0 . "LINE,*POLYLINE"))
  11.                  )
  12.           )
  13.      )
  14.    (progn
  15.      (repeat (setq integer (sslength selectionset))
  16.        (setq entities (cons (setq selectionsetname
  17.                                    (ssname
  18.                                      selectionset
  19.                                      (setq integer (1- integer))
  20.                                    )
  21.                             )
  22.                             entities
  23.                       )
  24.        )
  25.        (if (not (member (setq singlelayer
  26.                                (cdr (assoc 8 (entget selectionsetname)))
  27.                         )
  28.                         layers
  29.                 )
  30.            )
  31.          (setq layers (cons singlelayer layers))
  32.        )
  33.      )
  34.      (setq i 0)
  35.      (foreach layer layers
  36.        (repeat (setq number (length entities))
  37.          (if
  38.            (eq
  39.              (cdr
  40.                (assoc 8
  41.                       (entget (nth (setq number (1- number)) entities))
  42.                )
  43.              )
  44.              layer
  45.            )
  46.             (setq lst (cons layer (setq i (1+ i))))
  47.          )
  48.        )
  49.        (setq result (cons lst result))
  50.        (setq i 0)
  51.      )
  52.    )
  53. )
  54. (foreach one (reverse result)
  55.    (print one)
  56. )
  57. (textpage)
  58. (princ)
  59. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:17:19 | 显示全部楼层
这张桌子更好。
 
  1. (defun c:Test (/ entities i number integer layers lst object point1 p
  2.               height point2 result selectionset selectionsetname
  3.               singlelayer model table r c inc
  4.              )
  5. (vl-load-com)
  6. ;;; Tharwat 15. May. 2012 ;;;
  7. (if (and (setq point1 (getpoint "\n Specify first point :"))
  8.           (setq point2 (getpoint point1 "\n Specify Second point :"))
  9.           (setq selectionset
  10.                  (ssget "_F"
  11.                         (list point1 point2)
  12.                         '((0 . "LINE,*POLYLINE"))
  13.                  )
  14.           )
  15.           (setq p (getpoint "\n Table insertion point :"))
  16.      )
  17.    (progn
  18.      (setq height (if (zerop (cdr (assoc 40
  19.                                          (setq st
  20.                                                 (entget
  21.                                                   (tblobjname "STYLE" (getvar 'textstyle))
  22.                                                 )
  23.                                          )
  24.                                   )
  25.                              )
  26.                       )
  27.                     (cdr (assoc 42 st))
  28.                     (cdr (assoc 40 st))
  29.                   )
  30.      )
  31.      (repeat (setq integer (sslength selectionset))
  32.        (setq entities (cons (setq selectionsetname
  33.                                    (ssname
  34.                                      selectionset
  35.                                      (setq integer (1- integer))
  36.                                    )
  37.                             )
  38.                             entities
  39.                       )
  40.        )
  41.        (if (not (member (setq singlelayer
  42.                                (cdr (assoc 8 (entget selectionsetname)))
  43.                         )
  44.                         layers
  45.                 )
  46.            )
  47.          (setq layers (cons singlelayer layers))
  48.        )
  49.      )
  50.      (setq i 0)
  51.      (foreach layer layers
  52.        (repeat (setq number (length entities))
  53.          (if
  54.            (eq
  55.              (cdr
  56.                (assoc 8
  57.                       (entget (nth (setq number (1- number)) entities))
  58.                )
  59.              )
  60.              layer
  61.            )
  62.             (setq lst (cons layer (setq i (1+ i))))
  63.          )
  64.        )
  65.        (setq result (cons lst result))
  66.        (setq i 0)
  67.      )
  68.      (setq model (vla-get-modelspace
  69.                    (vla-get-activedocument (vlax-get-acad-object))
  70.                  )
  71.      )
  72.      (setq table (vla-addtable
  73.                    model
  74.                    (vlax-3d-point p)
  75.                    (1+ (length result))
  76.                    2
  77.                    (* height 2.)
  78.                    (* height 10.)
  79.                  )
  80.      )
  81.      (vla-settext table 0 0 "Section A - B")
  82.      (setq r   0
  83.            c   0
  84.            inc -1
  85.      )
  86.      (repeat (length result)
  87.        (vla-settext
  88.          table
  89.          (setq r (1+ r))
  90.          c
  91.          (car (nth (setq inc (1+ inc)) result))
  92.        )
  93.        (vla-settext
  94.          table
  95.          r
  96.          (setq c (1+ c))
  97.          (itoa (cdr (nth inc result)))
  98.        )
  99.        (setq c 0)
  100.      )
  101.    )
  102. )
  103. (princ)
  104. )
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 08:22:11 | 显示全部楼层
除第一个代码外:
  1. (defun c:LineCount ( / a acsp adoc b col cols i ip l num p q row rows s tbl tmp)
  2. (vl-load-com)
  3. (if
  4. (and
  5. (setq p (getpoint "\nPick 1st Point: "))
  6. (setq q (getpoint "\nPick 2nd Point: " p))
  7. )
  8. (if (setq s (ssget "_F" (list p q) '((0 . "*LINE"))))
  9. (progn
  10. (repeat (setq i (sslength s))
  11. (setq a (cdr (assoc 8 (entget (ssname s (setq i (1- i)))))))
  12. (if (setq b (assoc a l))
  13. (setq l (subst (list a (1+ (cadr b))) b l))
  14. (setq l (cons (list a 1) l))
  15. )
  16. )
  17. (setq adoc (vla-get-activedocument (vlax-get-acad-object))
  18. acsp (vla-get-block (vla-get-activelayout adoc))
  19. )
  20. (setq l (vl-sort l '(lambda ( a b ) (< (cadr a) (cadr b)))))
  21. (setq l (mapcar 'reverse l))
  22. (setq ip (getpoint "\nPick table position: "))
  23. (setq tbl (vlax-invoke acsp 'addtable ip (+ (length l) 1) (length (car l)) 25.0 250.0))
  24. (vla-put-regeneratetablesuppressed tbl :vlax-true)
  25. (vla-settext tbl 0 0 "Section [url="file://c3;a-b/"]\\C3;A-B[/url]")
  26. (setq row 1)
  27. (setq num (length l))
  28. (setq cols (length (car l)))
  29. (foreach x l
  30. (setq tmp (car l))
  31. (setq col 0)
  32. (while (< col cols)
  33. (vla-settext tbl row col (nth col x))
  34. (setq col (1+ col))
  35. )
  36. (setq row (1+ row))
  37. )
  38. (setq rows (vla-get-rows tbl))
  39. (vla-settextheight tbl actitlerow 20)
  40. (vla-settextheight tbl (+ acheaderrow acdatarow) 15)
  41. (vla-setcolumnwidth tbl 0 50.)
  42. (vla-setcolumnwidth tbl 1 150.)
  43. (vla-put-regeneratetablesuppressed tbl :vlax-false))
  44. )
  45. (princ "\nNo lines found between selected points.")
  46. )
  47. (princ)
  48. )

 
~'J'~
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:25:29 | 显示全部楼层
我比你想象的要大
我加载了代码,但我不知道如何在命令行中使用它,我从defun C编写测试:测试,但没有这样的命令,我应该如何运行它?
 
谢谢你们的帮助,你们都很坚强,我希望我也能为你们做点什么,
 
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:27:26 | 显示全部楼层
在命令行键入Vlide,然后从该应用程序启动一个新文件,然后复制代码并将其粘贴到新文件中,然后将文件保存在您想要的位置,然后返回Autocad并键入命令appload,然后选择刚刚保存的文件,当您完成键入test以启动例程时
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 20:50 , Processed in 0.553704 second(s), 75 queries .

© 2020-2025 乐筑天下

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