乐筑天下

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

[编程交流] 请帮帮我

[复制链接]

2

主题

8

帖子

6

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 11:42:22 | 显示全部楼层 |阅读模式
  1. ;WC.LSP is a programme to write coordinates. eldon Nov 1999
  2. (defun C:WC (/ pt0 e east eastin n north northin)
  3. ;here begins the loop that gets the actual positions
  4.   (while (setq PtCoord (getpoint "\nPick co-ordinate point:  "))
  5.           (setq
  6.         xval (car PtCoord) 2 4)
  7.             yval (cadr PtCoord) 2 4)
  8.             zval (caddr PtCoord) 2 4)
  9.         east (rtos xval 2 4)
  10.             north (rtos yval 2 4)
  11.             elev (rtos zval 2 4)
  12.             xval (strcat   "X=" east)
  13.             yval (strcat   "Y=" north)
  14.             zval (strcat   "z=" elev)
  15.          )
  16.   (command "TEXT" pt0 "0.5" "0" xval);size of text changed manually
  17.   (command "TEXT" "" yval)
  18.   (command "TEXT" "" zval)
  19.    )
  20.    (princ)
  21. )

 
Z值不会写在屏幕上。。。。怎么了?
如何将引线指向入口点的文本放置?
 
我见过lisp这样的人,而且工作过。。。如果有人有一个,请为我释放它,请。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:45:52 | 显示全部楼层
像这样的?
 
  1. (defun c:mpt (/ M-Text pt)
  2. (defun M-Text (pt val)
  3.    (entmakex (list (cons 0 "MTEXT")
  4.                    (cons 100 "AcDbEntity")
  5.                    (cons 100 "AcDbMText")
  6.                    (cons 10 (list (car pt) (cadr pt) 0.0))
  7.                    (cons 1 val))))
  8. (while (setq pt (getpoint "\nPick Point: "))
  9.    (setq pt (trans pt 1 0))
  10.    (M-Text pt
  11.      (apply 'strcat
  12.        (mapcar 'strcat '("X = " "\nY = " "\nZ = ") (mapcar 'rtos pt)))))
  13. (princ))
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 11:50:28 | 显示全部楼层
 
上面发布的代码在任何版本中都不起作用。
 
由于李发布了一个更好的整体解决方案,因此不需要修复您的原始代码。
 
我向Lee的代码建议的唯一改进是,不管选择的点是什么,都可能将注释放置在标高0.0处,因为使用TTF的文本在非零标高处看起来模糊/扭曲。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:55:00 | 显示全部楼层
很好,长官,代码更新了。
回复

使用道具 举报

2

主题

8

帖子

6

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 11:57:25 | 显示全部楼层
是这样的。。。嗯,就是。。。但是有一个领导者。。
此引线可以有一个文本位于的框。。。或z值的子行。。。你能这样对我吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:59:03 | 显示全部楼层
我相信ASMI创建了一个LISP,我对其进行了轻微修改,这可能适合
 
  1. ;; ==================================================================== ;;
  2. ;;                                                                      ;;
  3. ;;  ORDI.LSP - This lisp for labeling X,Y coordinates with              ;;
  4. ;;             standard _DIMORDINATE dimension. The dimension           ;;
  5. ;;             properties is defined by current dimension               ;;
  6. ;;             style and variables DIMSCALE, DIMLFAC                    ;;
  7. ;;             and DIMDEC.                                              ;;
  8. ;;                                                                      ;;
  9. ;; ==================================================================== ;;
  10. ;;                                                                      ;;
  11. ;;  Command(s) to call: ORDI                                            ;;
  12. ;;                                                                      ;;
  13. ;;  ... and pick, pick, pick... till Esc is pressed.                    ;;
  14. ;;                                                                      ;;
  15. ;; ==================================================================== ;;
  16. ;;                                                                      ;;
  17. ;;  THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY    ;;
  18. ;;  MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR        ;;
  19. ;;  PARTS OF IT ABSOLUTELY FREE.                                        ;;
  20. ;;                                                                      ;;
  21. ;;  THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY      ;;
  22. ;;  DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS        ;;
  23. ;;  FOR A PARTICULAR USE.                                               ;;
  24. ;;                                                                      ;;
  25. ;; ==================================================================== ;;
  26. ;;                                                                      ;;
  27. ;;  V1.3, 12 May, 2005, Riga, Latvia                                    ;;
  28. ;;  © Aleksandr Smirnov (ASMI)                                          ;;
  29. ;;  For AutoCAD 2000 - 2008 (isn't tested in a next versions)           ;;
  30. ;;                                                                      ;;
  31. ;;                             http://www.asmitools.com                 ;;
  32. ;;                                                                      ;;
  33. ;;  ~ Modified by Lee Mac  ~  14.02.10 ~                                ;;
  34. ;;                                                                      ;;
  35. ;; ==================================================================== ;;
  36. (defun c:ordi (/ *error* fPt oldEcho dScl dFlc dDec)
  37. (defun *error*(msg)
  38.    (and oldEcho (setvar "CMDECHO" oldEcho))
  39.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  40.        (princ (strcat "\n** Error: " msg " **")))
  41.    (princ))
  42. (princ (apply (function strcat)
  43.                (mapcar (function strcat) '("\nDIMSCALE = " " DIMLFAC = " " DIMDEC = ")
  44.                        (mapcar (function rtos)
  45.                                (mapcar (function set) '(dScl dFlc dDec)
  46.                                        (mapcar (function getvar)
  47.                                                '("DIMSCALE" "DIMLFAC" "DIMDEC")))))))
  48. (setq oldEcho (getvar "CMDECHO"))
  49. (setvar "CMDECHO" 0) (terpri)
  50. (while (setq fPt (getpoint "\rSpecify Point: "))
  51.    (command "_.dimordinate" "_non" fPt "_t"
  52.             (strcat    "X=" (rtos (* dFlc   (car fPt)) 2 dDec)
  53.                     "\\XY=" (rtos (* dFlc  (cadr fPt)) 2 dDec)) pause))
  54. (setvar "CMDECHO" oldEcho)
  55. (princ))
回复

使用道具 举报

2

主题

8

帖子

6

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:04:40 | 显示全部楼层
这很好,但没有给我z值。。。我是地形测量,我真的需要z值。
 
我尝试合并两个lisp:
 
  1. (defun c:mpt (/ Text pt)
  2. (defun Text (pt val)
  3. (entmakex (list (cons 0 "MTEXT")
  4.                    (cons 100 "AcDbEntity")
  5.                    (cons 100 "AcDbMText")
  6.                    (cons 10 (list (car pt) (cadr pt) 0.0))
  7.                    (cons 1 val))))
  8. (while (setq pt (getpoint "\nPick Point: "))
  9.     (setq pt (trans pt 1 0))
  10.     (setq midpt (getpoint pt))
  11.     (setq endpt (getpoint midpt))
  12.     (command "leader" pt midpt endpt "" "" "n")
  13.     (Text pt
  14.       (apply 'strcat
  15.         (mapcar 'strcat '("X = " "\nY = " "\nZ = ") (mapcar 'rtos pt)))))
  16. (princ))

 
 
...但正如你们将看到的,文本并没有停留在我想要的地方。
它应该保持在领导者中间点的顶部。。。但是用第一个点的坐标。。。你能按我想要的方式编辑这个吗?我真的很感激。
 
试着运行我刚刚在这里写的一个。。。这是一种混乱的结局。。但它会给你“想法”
 
 
ps:也编辑了你的。。。但无法将z值置于y值之下。。。我刚刚补充说:
 
“\\XZ=(rtos(*dFlc(caddr fPt))2 dDec))暂停)
 
它显示z值,但不低于Y值
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:07:27 | 显示全部楼层
由于Lisp的Autor是在线程开始时发布的,我必须指出,自从我发布Lisp以来,它已经被修改了。
 
在第6、7和8行的末尾有一个盈余2 4),在第16行中,pt0应该读取PtCoord,它也没有被声明为局部变量。
 
从写作日期来看,那时候我一定很聪明。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:10:13 | 显示全部楼层
 
问题是,当使用DIMORITY命令创建引线时,只能使用两条线(如果不使用多行文字)。
 
但是试试这个:
 
  1. ;; ==================================================================== ;;
  2. ;;                                                                      ;;
  3. ;;  ORDI.LSP - This lisp for labeling X,Y coordinates with              ;;
  4. ;;             standard _DIMORDINATE dimension. The dimension           ;;
  5. ;;             properties is defined by current dimension               ;;
  6. ;;             style and variables DIMSCALE, DIMLFAC                    ;;
  7. ;;             and DIMDEC.                                              ;;
  8. ;;                                                                      ;;
  9. ;; ==================================================================== ;;
  10. ;;                                                                      ;;
  11. ;;  Command(s) to call: ORDI                                            ;;
  12. ;;                                                                      ;;
  13. ;;  ... and pick, pick, pick... till Esc is pressed.                    ;;
  14. ;;                                                                      ;;
  15. ;; ==================================================================== ;;
  16. ;;                                                                      ;;
  17. ;;  THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY    ;;
  18. ;;  MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR        ;;
  19. ;;  PARTS OF IT ABSOLUTELY FREE.                                        ;;
  20. ;;                                                                      ;;
  21. ;;  THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY      ;;
  22. ;;  DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS        ;;
  23. ;;  FOR A PARTICULAR USE.                                               ;;
  24. ;;                                                                      ;;
  25. ;; ==================================================================== ;;
  26. ;;                                                                      ;;
  27. ;;  V1.3, 12 May, 2005, Riga, Latvia                                    ;;
  28. ;;  © Aleksandr Smirnov (ASMI)                                          ;;
  29. ;;  For AutoCAD 2000 - 2008 (isn't tested in a next versions)           ;;
  30. ;;                                                                      ;;
  31. ;;                             http://www.asmitools.com                 ;;
  32. ;;                                                                      ;;
  33. ;;  ~ Modified by Lee Mac  ~  14.02.10 ~                                ;;
  34. ;;                                                                      ;;
  35. ;; ==================================================================== ;;
  36. (defun c:ordi (/ *error* fPt oldEcho dScl dFlc dDec)
  37. (defun *error*(msg)
  38.    (and oldEcho (setvar "CMDECHO" oldEcho))
  39.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  40.        (princ (strcat "\n** Error: " msg " **")))
  41.    (princ))
  42. (princ (apply (function strcat)
  43.                (mapcar (function strcat) '("\nDIMSCALE = " " DIMLFAC = " " DIMDEC = ")
  44.                        (mapcar (function rtos)
  45.                                (mapcar (function set) '(dScl dFlc dDec)
  46.                                        (mapcar (function getvar)
  47.                                                '("DIMSCALE" "DIMLFAC" "DIMDEC")))))))
  48. (setq oldEcho (getvar "CMDECHO"))
  49. (setvar "CMDECHO" 0) (terpri)
  50. (while (setq fPt (getpoint "\rSpecify Point: "))
  51.    (command "_.dimordinate" "_non" fPt "_M"
  52.             (strcat    "X=" (rtos (* dFlc   (car fPt)) 2 dDec)
  53.                     "\\PY=" (rtos (* dFlc  (cadr fPt)) 2 dDec)
  54.                     "\\PZ=" (rtos (* dFlc (caddr fPt)) 2 dDec)) pause))
  55. (setvar "CMDECHO" oldEcho)
  56. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:14:07 | 显示全部楼层
 
顺便说一句,Eldon,我意识到这可能是你的一个旧LISP,但我建议不要使用(命令)创建文本(以及ATTDEF)。
 
我之前可能已经提到过这一点,但我发现在各种图形中这一点非常不可靠,而且它也比entmake的替代方案慢得多。
 
为了更简单,我创建了这个线程
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:29 , Processed in 0.400065 second(s), 72 queries .

© 2020-2025 乐筑天下

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