乐筑天下

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

[编程交流] 需要修改此代码

[复制链接]

13

主题

54

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 15:01:07 | 显示全部楼层 |阅读模式
我需要修改一下这段代码,我希望这段代码也包括选定的文本。
 
例如,如果我选择单行或多行文本的一个点,它也应该包括该文本。
 
输出:
 
 
1 379441.2985 2611227.953 abcd
2      279454.2985        1611227.953     45.56
 
 
当做
有好运的
 
  1. ;; ==================================================================== ;;
  2. ;;                                                                      ;;
  3. ;;  ORDY.LSP - This lisp for labeling X,Y coordinates and point         ;;
  4. ;;               numbers with standard _DIMORDINATE dimension.            ;;
  5. ;;               All coordinates and point numbers keeps in the           ;;
  6. ;;               text file "Drawing_Name.csv" in a format:                ;;
  7. ;;             "point_number, X-coordinate, Y-coordinate, 0".           ;;
  8. ;;             The dimension properties is defined by current           ;;
  9. ;;             dimension style and variables DIMSCALE, DIMLFAC          ;;
  10. ;;             and DIMDEC.                                              ;;
  11. ;;                                                                      ;;
  12. ;; ==================================================================== ;;
  13. ;;                                                                      ;;
  14. ;;  Command(s) to call: ORDY                                            ;;
  15. ;;                                                                      ;;
  16. ;;  Specify point number and insert coordinates labels.                 ;;
  17. ;;                                                                      ;;
  18. ;; ==================================================================== ;;
  19. ;;                                                                      ;;
  20. ;;  THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY    ;;
  21. ;;  MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR        ;;
  22. ;;  PARTS OF IT ABSOLUTELY FREE.                                        ;;
  23. ;;                                                                      ;;
  24. ;;  THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY      ;;
  25. ;;  DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS        ;;
  26. ;;  FOR A PARTICULAR USE.                                               ;;
  27. ;;                                                                      ;;
  28. ;; ==================================================================== ;;
  29. ;;                                                                      ;;
  30. ;;  V1.1, 8th Apr 2008, Riga, Latvia                                    ;;
  31. ;;  © Aleksandr Smirnov (ASMI)                                          ;;
  32. ;;  For AutoCAD 2000 - 2008 (isn't tested in a next versions)           ;;
  33. ;;                                                                      ;;
  34. ;;                                 http://www.asmitools.com             ;;
  35. ;;                                                                      ;;
  36. ;; ==================================================================== ;;
  37. (defun c:ordy(/ fPt oldEcho oldNum dFlc dDec fVar cX cY cNum *error*)
  38. (defun *error*(msg)
  39.    (setvar "CMDECHO" 1)
  40.    (if fVar(close fVar))
  41.    (princ)
  42.    ); end of *error*
  43. (princ(strcat "DIMSCALE="(rtos(getvar "DIMSCALE"))" "
  44.         "DIMLFAC="(rtos(setq dFlc(getvar "DIMLFAC")))" "
  45.         "DIMDEC="(rtos(setq dDec(getvar "DIMDEC")))" "
  46. ); end strcat
  47. ); end princ       
  48. (setvar "CMDECHO" 0)
  49. (if(= 0(getvar "USERI3"))(setvar "USERI3" 1)
  50.    ); end if
  51. (setq cNum(getint(strcat "\nSpecify first point number <"
  52.                         (itoa(getvar "USERI3")) ">: ")))
  53. (if cNum (setvar "USERI3" cNum))
  54. (setq fVar(open(strcase(strcat(getvar "DWGPREFIX")
  55.                          (getvar "DWGNAME") ".csv")) "a"))
  56. (while
  57.    (setq fPt
  58.    (getpoint
  59.             (strcat "\nSpecify point or Right-Click to Quit <"
  60.              (itoa(getvar "USERI3"))">: ")))
  61.      (if(vl-cmdf "_.dimordinate" fPt "_t"
  62.          (strcat
  63. "["(itoa(getvar "USERI3"))"]" "\\P"
  64.       (setq cX(rtos(* dFlc(car fPt))2 dDec)) "mE"  
  65.       "\\X"
  66.       (setq cY(rtos(* dFlc(cadr fPt))2 dDec)) "mN"
  67.       ); end strcat
  68.          pause
  69.          ); end vl-cmdf
  70. (progn
  71.   (write-line
  72.     (strcat
  73.       (itoa(getvar "USERI3")) "," cX "," cY "," "0")fVar)
  74.   (setvar "USERI3"(1+(getvar "USERI3")))
  75.   ); end progn
  76. ); end if
  77.    ); end while
  78.    (close fVar)
  79.    (setvar "CMDECHO" 1)
  80. (princ)
  81. ); end of c:ordy
  82. (princ "\n[info] http:\\\\www.AsmiTools.com [info]")
  83. (princ "\n[info] Type ORDY to tag coordinates [info]")
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:14:40 | 显示全部楼层
看看entsel或vl解决方案get textstring get insertionpoint提供了什么,我建议花点时间研究这两种方法,因为它们包含了关于对象的所有基本信息
 
  1. (setq ent (entget (car (entsel))))
  2. (setq inspt (list (nth 1  (assoc 10 ent))(nth 2  (assoc 10 ent))))
  3. (setq str (cdr (assoc 1 ent)))

 
  1. (setq ent (vlax-Ename->Vla-Object (car (entsel))))
  2. (setq str (vla-get-textstring ent))
  3. (setq pt (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint ent))))
  4. (alert (strcat "X Y " (rtos (car pt) 2 2) "," (rtos (cadr pt) 2 2) "\n" str))

 
还有这个
  1. ;;; Dump all methods and properties for selected objects              ;
  2. ;;;===================================================================;
  3. ;;; DumpIt                                                            ;
  4. ;;;-------------------------------------------------------------------;
  5. ;;;===================================================================;
  6. (defun C:DumpIt ( / ent)
  7. (while (setq ent (entsel))
  8.    (vlax-Dump-Object
  9.      (vlax-Ename->Vla-Object (car ent)) T
  10.    )
  11. )
  12. (textpage)
  13. (princ)
  14. )
回复

使用道具 举报

13

主题

54

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 15:22:44 | 显示全部楼层
您好,贝加尔,我查看了您的建议,尝试了上面两个版本的代码,返回用户选择的实体的字符串值。但我无法修改上述代码以获得所需的内容。请帮忙
 
我尝试使用intget而不是getppoint,上面提供了一段代码,但它不起作用。。。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 15:32:17 | 显示全部楼层
你好
例如:
  1. (defun get:text (/ obj)
  2. (princ "\nSelect text :")
  3. (if (setq obj (ssget "_+.:S:E" '((0 . "*TEXT"))))
  4.    (cdr (assoc 1 (entget (ssname obj 0))))
  5.    )
  6. )
  7. ;; ... usage of the above function.    ;;
  8. (get:text)
回复

使用道具 举报

13

主题

54

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 15:43:16 | 显示全部楼层
 
您好,请您将其合并到ORDY中。Lisp程序?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 15:47:44 | 显示全部楼层
 
你好
修改此项:
  1. (while (and (setq fPt (getpoint (strcat "\nSpecify point or Right-Click to Quit <" (itoa (getvar "USERI3")) ">: ")))
  2.            (princ "\nPick a text :")
  3.            (setq txt (ssget "_+.:S:E" '((0 . "*TEXT"))))
  4.            )

 
这是:
 
  1. (write-line (strcat (itoa (getvar "USERI3")) "," cX "," cY "," "0" (cdr (assoc 1 (entget (ssname txt 0))))) fVar)

 
最后,将此变量“txt”本地化如下:
 
  1. (/ fPt oldEcho oldNum dFlc dDec fVar cX cY cNum *error* txt)
回复

使用道具 举报

13

主题

54

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 15:57:10 | 显示全部楼层
非常感谢你
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:08:14 | 显示全部楼层
 
随时欢迎你。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 00:47 , Processed in 2.712970 second(s), 69 queries .

© 2020-2025 乐筑天下

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