乐筑天下

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

[编程交流] 用于CenterPoint导出wi的Lisp

[复制链接]

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 06:13:56 | 显示全部楼层 |阅读模式
大家好,
 
以下是我到目前为止可以使用以下代码(主要来自Tharwat,但我做了一些调整):
1) 它要求用户输入指定原点(基本上设置UCS)
2) 将XY直径细节导出到excel文件(&D)(使用trans函数将XY转换为当前UCS)
3) 添加0,0原点文本,以便用户知道原点是否正确。
 
 
我想要的是:
1) 所有实体(圆弧或圆)应在图纸1、2、3等上编号。。。。
2) 它创建的表格应具有第一列序列号(每个项目1)和第五列实体类型(例如圆弧或圆),以识别对象类型。
 
有人能帮我吗?
 
 
干杯
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 06:21:56 | 显示全部楼层
您需要使用代码标记而不是引号标记。代码发布指南
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:22:42 | 显示全部楼层
为什么不显示您希望的输出?做一张桌子,展示它应该是什么样子。以您希望的方式显示图形中编号的一些圆弧和圆。
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 06:26:20 | 显示全部楼层
虽然重新编写lisp很有趣,但我坚持使用您的格式。
 
  1. (defun c:XYT (/ *error* fl f ss i sn e c d x y DLName)
  2. (SETVAR "TEXTSIZE" 2.5)
  3. (defun *error* (msg)
  4.    (and f (close f))
  5.    (princ (strcat "\nError: " msg "\n*Cancel*"))
  6.    )
  7. (if (and (setq fl (getfiled "Specify the .xls file name :"
  8.         (getvar 'DWGPREFIX)
  9.         "xls"
  10.         1
  11.         )
  12.   )
  13.    (setq f (open fl "w"))
  14.    (progn
  15.      (setq orgn (getpoint "\n Specify the origin:"))
  16.      (command "ucs" "o" orgn)
  17.      (princ "\n Select Ellipse, Arcs & Circles")
  18.      (setq ss (ssget '((0 . "CIRCLE,ARC"))))
  19.      )
  20.    )
  21.    (progn
  22.      (write-line "Serial Number: \t X: \t Y: \t Dia: \t Type:" f)
  23.      (setq loop 1)
  24.      (repeat (setq i (sslength ss))
  25. (setq e (entget (setq sn (ssname ss (setq i (1- i)))))
  26.       c (cdr (assoc 10 e))
  27.       )
  28. (setq d (* (cdr (assoc 40 e)) 2.))
  29. (write-line
  30.   (strcat (rtos loop)
  31.    "\t"
  32.    (setq x (rtos (car (trans c 0 1)) 2 3))
  33.    "\t"
  34.    (setq y (rtos (cadr (trans c 0 1)) 2 3))
  35.    "\t"
  36.    (setq d (rtos d 2 3))
  37.    "\t"
  38.    (cdr(assoc 0 e))
  39.    )
  40.   f
  41.   )
  42. (command "mtext" (strcat x "," y) "j" "mc" (strcat x "," y) loop "")
  43. (setq loop (+ 1 loop))
  44. )
  45.      (close f)
  46.      (command "mtext" "0,0" "j" "tr" "-2,-2" "0,0" "ORIGIN" "")
  47.      (command "chprop" "l" "" "c" "4" "")
  48.      ; (load "tbl3")
  49.      ; (tbl3)
  50.      (princ)
  51.      )
  52.    (princ)
  53.    )
  54. )
回复

使用道具 举报

6

主题

249

帖子

247

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:33:27 | 显示全部楼层
 
在这里,使用AC2008和“ellipse”命令绘制椭圆似乎不起作用。
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 06:36:36 | 显示全部楼层
 
这是因为原作不能处理椭圆。我本想问他是否想包括椭圆,但他的声明只提到了圆和弧。我想也许他一开始想要省略号,但后来又删除了。
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 06:41:02 | 显示全部楼层
如果需要椭圆。。。
 
  1. (defun c:XYT (/ *error* fl f ss i sn e c d x y DLName)
  2. (SETVAR "TEXTSIZE" 2.5)
  3. (defun *error* (msg)
  4. (and f (close f))
  5. (princ (strcat "\nError: " msg "\n*Cancel*"))
  6. )
  7. (if (and (setq fl (getfiled "Specify the .xls file name :"
  8. (getvar 'DWGPREFIX)
  9. "xls"
  10. 1
  11. )
  12. )
  13. (setq f (open fl "w"))
  14. (progn
  15. (setq orgn (getpoint "\n Specify the origin:"))
  16. (command "ucs" "o" orgn)
  17. (princ "\n Select Ellipse, Arcs & Circles")
  18. (setq ss (ssget '((0 . "CIRCLE,ARC,ELLIPSE"))))
  19. )
  20. )
  21. (progn
  22. (write-line "Serial Number: \t X: \t Y: \t Dia: \t Type:" f)
  23. (setq loop 1)
  24. (repeat (setq i (sslength ss))
  25. (setq e (entget (setq sn (ssname ss (setq i (1- i)))))
  26. c (cdr (assoc 10 e))
  27. )
  28. (setq d (* (cdr (assoc 40 e)) 2.))
  29. (write-line
  30. (strcat (rtos loop)
  31. "\t"
  32. (setq x (rtos (car (trans c 0 1)) 2 3))
  33. "\t"
  34. (setq y (rtos (cadr (trans c 0 1)) 2 3))
  35. "\t"
  36. (setq d (rtos d 2 3))
  37. "\t"
  38. (cdr(assoc 0 e))
  39. )
  40. f
  41. )
  42. (command "mtext" (strcat x "," y) "j" "mc" (strcat x "," y) loop "")
  43. (setq loop (+ 1 loop))
  44. )
  45. (close f)
  46. (command "mtext" "0,0" "j" "tr" "-2,-2" "0,0" "ORIGIN" "")
  47. (command "chprop" "l" "" "c" "4" "")
  48. ; (load "tbl3")
  49. ; (tbl3)
  50. (princ)
  51. )
  52. (princ)
  53. )
  54. )
回复

使用道具 举报

6

主题

249

帖子

247

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:42:31 | 显示全部楼层
 
很好,谢谢!!
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 06:50:01 | 显示全部楼层
哇,这正是我所希望的。好东西Commandobill。
 
与我发布的内容相比,我会花一些时间完全理解你是如何做到这一点的。
 
说如果没有太多的要求。可以按类型列出项目吗。就像所有的圆都列在第一位,然后是所有的弧,然后是椭圆?
或者可能是,如果可能的话,比如说圆编号为C1,C2。。。弧编号为A1、A2。。。。椭圆E1,E2。。。
 
只是好奇。。。
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 06:53:58 | 显示全部楼层
像这样的?
 
  1. (defun c:XYT (/ *error* c f itemlist loop objlet objtype orgn osmode sorteditemlist textsize x y z)
  2. (defun *error* ( msg )
  3.    (if osmode (setvar 'OSMODE osmode))
  4.    (and f (close f))
  5.    (setvar 'textsize textsize)
  6.    (setvar 'cmdecho 1)
  7.    (if (not (member msg '("Function cancelled" "quit / exit abort")))
  8.      (princ (strcat "\nError: " msg))
  9.      )
  10.    (princ)
  11.    )
  12. (setq osmode (getvar 'osmode))
  13. (setq textsize (getvar 'textsize))
  14. (setvar 'osmode 0)
  15. (setvar 'cmdecho 0)
  16. (setvar 'textsize 2.5)
  17. (if (and (setq fl (getfiled "Specify the .xls file name :"
  18.         (getvar 'DWGPREFIX)
  19.         "xls"
  20.         1
  21.         )
  22.   )
  23.    (setq f (open fl "w"))
  24.    (progn
  25.      (setq orgn (getpoint "\n Specify the origin:"))
  26.      (command "ucs" "o" orgn)
  27.      (princ "\n Select Ellipse, Arcs & Circles")
  28.      (setq ss (ssget '((0 . "CIRCLE,ARC,ELLIPSE"))))
  29.      )
  30.    )
  31.    (progn
  32.      (write-line "Serial Number: \t X: \t Y: \t Dia: \t Type:" f)
  33.      (if (setq itemList (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
  34. (progn
  35.   (setq sortedItemList (vl-sort itemList '(lambda (x z) (< (cdr (assoc 0 x)) (cdr (assoc 0 z))))))
  36.   (mapcar '(lambda (z)
  37.       (if (not (eq (cdr(assoc 0 z)) objType))
  38.         (setq loop 1))
  39.       (write-line
  40.         (strcat (setq objLet (substr (setq objType (cdr (assoc 0 z))) 1 1)) (itoa loop)
  41.          "\t"
  42.          (setq x (rtos (car (trans (setq c (cdr (assoc 10 z))) 0 1)) 2 3))
  43.          "\t"
  44.          (setq y (rtos (cadr (trans c 0 1)) 2 3))
  45.          "\t"
  46.          (rtos (* (cdr (assoc 40 z)) 2.) 2 3)
  47.          "\t"
  48.          (cdr(assoc 0 z))
  49.          )
  50.         f
  51.         )
  52.       (command "mtext" (strcat x "," y) "j" "mc" (strcat x "," y) (strcat objLet (itoa loop)) "")
  53.       (setq loop (+ 1 loop))
  54.       ) sortedItemList)))
  55.      (close f)
  56.      (command "mtext" "0,0" "j" "tr" "-2,-2" "0,0" "ORIGIN" "")
  57.      (command "chprop" "l" "" "c" "4" "")
  58.      (princ)
  59.      )
  60.    (princ)
  61.    )
  62. (setvar 'osmode osmode)
  63. (setvar 'cmdecho 1)
  64. (setvar 'textsize textsize)
  65. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:55 , Processed in 0.881131 second(s), 72 queries .

© 2020-2025 乐筑天下

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