乐筑天下

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

[编程交流] 方位和距离

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:27:14 | 显示全部楼层
好的,您需要这些代码位的相反部分,如下所示
 
  1. (setq curlayout (getvar "ctab"))
  2. (if (= curlayout "Model")
  3. (progn
  4. (princ) ; dummy for else
  5. (Alert "You need to be in model space for this option")
  6. (exit)
  7. ; same with this
  8. (setq curspace (vla-get-modelspace doc))
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:31:23 | 显示全部楼层
我做了更改,但不起作用?
 
  1. ; dwg index to a table
  2. ; by Alan H NOV 2013
  3. (defun AH:dwgindex (/ doc objtable ss1 lay ans ans2 plotabs ss1 tag2 tag3 list1 list2 curlayout colwidth numcolumns numrows INC rowheight )
  4. (vl-load-com)
  5. (setq curlayout (getvar "ctab"))
  6. (if (= curlayout "Model")
  7. (progn
  8. (princ) ; dummy for else
  9. (Alert "You need to be in model space for this option")
  10. (exit)
  11. ) ; end progn
  12. ) ; end if model
  13. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  14. ; same with this
  15. (setq curspace (vla-get-modelspace doc))
  16. (setq pt1 (vlax-3d-point (getpoint "\nPick point for top left hand of table:  ")))
  17. ;(setq pt1 (vlax-3d-point '(0 0 0)))
  18. ; for testing
  19. ; read values from title blocks
  20. ;(setq bname "DA1DRTXT")
  21. (setq bname "COGG_TITLE")
  22. (setq tag2 "DRG_NO") ;attribute tag name
  23. (setq tag3 "WORKS_DESCRIPTION") ;attribute tag name
  24. (setq ss1 (ssget "x"  (list (cons 0 "INSERT") (cons 2 bname))))
  25. (setq INC (sslength ss1))  
  26. (repeat INC
  27. (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 (SETQ INC (- INC 1)) )) 'getattributes)
  28.        (if (= tag2 (strcase (vla-get-tagstring att)))
  29.            (progn
  30.            (setq ans (vla-get-textstring att))
  31.            (if (/= ans NIL)
  32.            (setq list1 (cons ans list1))
  33.            ) ; if
  34.            ); end progn
  35.          ) ; end if
  36.        (if (= tag3 (strcase (vla-get-tagstring att)))
  37.          (progn
  38.          (setq ans2 (vla-get-textstring att))
  39.          (if (/= ans2 NIL)
  40.              (setq list2 (cons ans2 list2))
  41.           ) ; end if
  42.           ) ; end progn
  43. ) ; end if tag3
  44. ) ; end foreach
  45. ) ; end repeat
  46. (setvar 'ctab curlayout)
  47. (command "Zoom" "E")
  48. (command "regen")
  49. (reverse list1)
  50. ;(reverse list2)
  51. ; now do table
  52. (setq numrows (+ 2 (sslength ss1)))
  53. (setq numcolumns 2)
  54. (setq rowheight 0.2)
  55. (setq colwidth 130)
  56. (setq objtable (vla-addtable curspace pt1 numrows numcolumns rowheight colwidth))
  57. (vla-settext objtable 0 0 "DRAWING REGISTER")
  58. (vla-settext objtable 1 0 "DRAWING NUMBER")
  59. (vla-settext objtable 1 1 "DRAWING TITLE")
  60. (SETQ X 0)
  61. (SETQ Y 2)
  62. (REPEAT (sslength ss1)
  63. (vla-settext objtable Y 0 (NTH X LIST1))
  64. (vla-settext objtable Y 1 (NTH X LIST2))
  65. (vla-setrowheight objtable y 10)
  66. (SETQ X (+ X 1))
  67. (SETQ Y (+ Y 1))
  68. )
  69. (vla-setcolumnwidth objtable 0 55)
  70. (vla-setcolumnwidth objtable 1 130)
  71. (command "_zoom" "e")
  72. ); end AH defun
  73. (AH:dwgindex)
  74. (princ)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:34:36 | 显示全部楼层
我发布的例子只是展示了如何做一些事情的方法,比如你想要什么,而不是对你的请求的一个精确的解决方案——代码必须更改。
 
CADTUTOR不是一个免费的网站,任何人都可以访问并获得一个专门编写的soloution。如果我能抽出时间,我会更改代码。
 
你已经贴了很多次了,所以现在可能是你开始尝试写一些Lisp程序的东西的时候了。这里有很多人可以帮助并且非常愿意帮助那些自助的人。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:37:29 | 显示全部楼层
为了好玩
 
  1. (Defun c:DiaTabs ;|<--- haha |; ( / _Insert _AttFunc cnt data  p1 p2 p1l p2l p3 ip data num)
  2. (vl-load-com)
  3. (defun _insert (sp bname p)(vlax-invoke space 'InsertBlock p bname 1 1 1 0))
  4. (defun _AttFunc  (en lst / vals v)
  5. (mapcar (function (lambda (at)
  6. (setq vals (list (vla-get-tagstring at)(vla-get-textstring at)))
  7.                  (if (and lst (setq v (assoc (car vals) lst)))
  8.                          (vla-put-textstring at (cadr v))) vals))
  9.                      (vlax-invoke (if (eq (type en) 'VLA-OBJECT)
  10.                                  en (vlax-ename->vla-object en)) 'Getattributes)
  11.         )
  12. )  
  13. (if (not (member "geomcal.arx" (arx)))
  14.    (arxload "geomcal")
  15.    )
  16. (setq ADoc (vla-get-activedocument (vlax-get-acad-object))
  17.    Space (if (= (getvar "CVPORT") 1)
  18.              (vla-get-PaperSpace ADoc)
  19.              (vla-get-ModelSpace ADoc)
  20.          ))
  21.                                  
  22.       
  23. (setq cnt -1 num 0)  
  24. (if (and (vl-every '(lambda (b)
  25.      (setq cnt (1+ cnt))                 
  26.      (tblsearch "BLOCK" b)) (setq blks '("STATION" "POINT" "TITLE" "DATA")))
  27. (setq p1 (getpoint "\nPick Base Referene point: "))
  28. (setq p2 (getpoint p1 "\nPick Second point: "))
  29. (setq p1l (getstring "\nEnter Label of BP: "))
  30. (setq p2l (getstring "\nEnter Label of SP: "))
  31. )
  32.         (progn
  33.   (setq angs (If (> (car p1)(car p2))
  34.                     "ang(p1,p3,p2)" "ang(p1,p2,p3)"))
  35.      (setq  data nil)
  36.           (vlax-invoke space 'AddLine p1 p2)
  37.           (_AttFunc (_Insert space "STATION" p1 ) (list (list "POINT" (strcase p1l))));<-- Optional
  38.           (_AttFunc (_Insert space "STATION" p2 ) (list (list "POINT" (strcase p2l))));<-- Optional
  39.         (while (setq p3 (getpoint p1 (strcat "\nPick point " (itoa (setq num (1+ num)))":")))
  40. ;;;                Place here DimeAng line <Optional>                ;;;
  41. ;;;                                                                ;;;
  42.         (entmakex (list (cons 0 "LINE")'(6 . "HIDDEN2")'(8 . "Distance")
  43.                  (cons 10 p1) (cons 11 p3)))
  44.           (_AttFunc (_Insert space "POINT" p3 ) (list (list "POINT" (itoa num))))
  45.         (setq data (cons (list
  46.                            (itoa num)
  47.                            (Strcat
  48.                              (rtos
  49.                                (cvunit (c:cal angs)
  50.                                        "degree" "grad") 2 4)
  51.                              "g"
  52.                            )
  53.                            (rtos (distance p1 p3) 2 2)
  54.                          ) data))
  55.           )
  56.           (setq ip (getpoint  "\nPick Base point for Table: "))
  57.           (_AttFunc (_Insert space "TITLE" ip )
  58.                   (list (list "TITLE" (strcat "FROM " (strcase p1l) " -> " (strcase p2l)))))
  59.   (foreach itm (reverse data)
  60.         (_AttFunc (_Insert space "DATA" ip )
  61.                   (list (list "NUM" (car itm))
  62.                         (list "BEARING" (cadr itm))
  63.                         (list "DISTANCE" (last itm))))
  64.             (setq ip (polar ip (* pi 1.5) 1.0)))
  65. )
  66.   (princ (strcat "\n<<<Block " (nth cnt blks) " Not Found>>>"))
  67. )
  68. (princ)
  69. )
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:37:58 | 显示全部楼层
你好,谢谢你的代码,但如果可以的话,我还需要一些修改
 
1) 我想要DiaTabs。当我“为表格拾取基点:”
2) 用同样的方法我“选择基准参考点:”并选择块并写入块的文本,用同样的方法当我选择文本块时写入文本的名称。因为在某些情况下,项目编号的顺序不是(1、2、3、4、5……100等),而是随机的(50、48、32、60、72、34、15.22……等)
DiaTabs。图纸
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:43:43 | 显示全部楼层
我试过这个,但我有一个小错误。。。。
我仍然有这个问题
 
2) 用同样的方法我“选择基准参考点:”并选择块并写入块的文本,用同样的方法当我选择文本块时写入文本的名称。因为在某些情况下,项目编号的顺序不是(1、2、3、4、5……100等),而是随机的(50、48、32、60、72、34、15.22……等)
 
  1. (Defun c:DiaTabs ;|<--- haha |; ( / _Insert _AttFunc _getprop cnt data space ob1 ob2 ob3  p1 p2 p3 ip  num)
  2. (vl-load-com)
  3. (defun _insert (sp bname p)(vlax-invoke space 'InsertBlock p bname 1 1 1 0))
  4. (defun _AttFunc  (en lst / vals v)
  5. (mapcar (function (lambda (at)
  6. (setq vals (list (vla-get-tagstring at)(vla-get-textstring at)))
  7.                  (if (and lst (setq v (assoc (car vals) lst)))
  8.                          (vla-put-textstring at (cadr v))) vals))
  9.                      (vlax-invoke (if (eq (type en) 'VLA-OBJECT)
  10.                                  en (vlax-ename->vla-object en)) 'Getattributes)
  11.         )
  12. )
  13. (defun _getprop        (msg bn tg )
  14. (prompt msg)
  15. (if (setq
  16. s (ssget "_:S:L" (list '(0 . "INSERT") '(66 . 1) (cons 2 bn)))
  17.      )
  18.    (setq att (_AttFunc (ssname s 0) nil)
  19.   ip (cdr (assoc 10 (entget (ssname s 0)))))
  20.   (progn (princ "\n<<Invlaid Seletion>>") (_getprop msg bn tg))
  21.    )
  22. (list ip (assoc tg att) )
  23. )  (if (not (member "geomcal.arx" (arx)))
  24.    (arxload "geomcal")
  25.    )
  26. (setq ADoc (vla-get-activedocument (vlax-get-acad-object))
  27.    Space (if (= (getvar "CVPORT") 1)
  28.              (vla-get-PaperSpace ADoc)
  29.              (vla-get-ModelSpace ADoc)
  30.          ))
  31. (setq cnt -1 num 1)  
  32. (if (vl-every '(lambda (b)
  33.      (setq cnt (1+ cnt))                 
  34.      (tblsearch "BLOCK" b)) (setq blks '("STATION" "POINT" "TITLE" "DATA")))
  35. (progn
  36.         (setq ob1 (_GETPROP "\nPick Base Referene point: " "STATION" "POINT" ))
  37. (setq ob2 (_GETPROP "\nPick Second point: " "STATION" "POINT" ))
  38.   (setq p1 (Car ob1) p2 (car ob2))
  39.   (setq angs (If (> (car p1)(car p2))
  40.                     "ang(p1,p3,p2)" "ang(p1,p2,p3)"))
  41.      (setq  data nil)
  42.         (while  (setq p3 (getpoint p1 (strcat "\nPick point " (itoa num)":")))
  43.                   (if (and (cadr (sssetfirst nil  (ssget  "_C" p3 p3 '((2 . "POINT")))))
  44.                          (setq ob3 (_GETPROP (strcat "\nPick point " (itoa num)":")
  45.                                     "POINT" "POINT" )))
  46.                   (progn (setq p3 (car ob3))
  47.                         (setq data (cons (list
  48.                            (itoa num)
  49.                            (Strcat
  50.                              (rtos
  51.                                (cvunit (c:cal angs)
  52.                                        "degree" "grad") 2 4)
  53.                              "g"
  54.                            )
  55.                            (rtos (distance p1 p3) 2 2)
  56.                          ) data))
  57.                           (setq num (1+ num))
  58.                           )
  59.                   (princ "\nBlock "POINT" Not found"))
  60.           )
  61.   
  62.           (setq ip (getpoint  "\nPick Base point for Table: "))
  63.           (_AttFunc (_Insert space "TITLE" ip )
  64.                   (list (list "TITLE" (strcat "FROM " (strcase (cadadr ob1)) " -> " (strcase (cadadr ob2))))))
  65.   (foreach itm (reverse data)
  66.         (_AttFunc (_Insert space "DATA" ip )
  67.                   (list (list "NUM" (car itm))
  68.                         (list "BEARING" (cadr itm))
  69.                         (list "DISTANCE" (last itm))))
  70.             (setq ip (polar ip (* pi 1.5) 1.0)))
  71. )
  72.   (princ (strcat "\n<<<Block " (nth cnt blks) " Not Found>>>"))
  73. )
  74. (princ)
  75. )

DiaTabs。图纸
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:46:11 | 显示全部楼层
有什么想法吗?
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:47:41 | 显示全部楼层
 
想法,很多!!
时间不多。
耐心[迅速耗尽…]
 
[参考帖子#13]
 
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:51:52 | 显示全部楼层
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:56:17 | 显示全部楼层
 
Ideas, a lot!!
Time, not so much.
Patience [rapidly running out...]
 
[Refer to post # 13]
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:09 , Processed in 0.535074 second(s), 70 queries .

© 2020-2025 乐筑天下

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