lucky9 发表于 2022-7-5 15:01:07

需要修改此代码

我需要修改一下这段代码,我希望这段代码也包括选定的文本。
 
例如,如果我选择单行或多行文本的一个点,它也应该包括该文本。
 
输出:
 
 
1 379441.2985 2611227.953 abcd
2      279454.2985        1611227.953   45.56
 
 
当做
有好运的
 
;; ==================================================================== ;;
;;                                                                      ;;
;;ORDY.LSP - This lisp for labeling X,Y coordinates and point         ;;
;;             numbers with standard _DIMORDINATE dimension.            ;;
;;             All coordinates and point numbers keeps in the         ;;
;;             text file "Drawing_Name.csv" in a format:                ;;
;;             "point_number, X-coordinate, Y-coordinate, 0".         ;;
;;             The dimension properties is defined by current         ;;
;;             dimension style and variables DIMSCALE, DIMLFAC          ;;
;;             and DIMDEC.                                              ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;Command(s) to call: ORDY                                          ;;
;;                                                                      ;;
;;Specify point number and insert coordinates labels.               ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY    ;;
;;MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR      ;;
;;PARTS OF IT ABSOLUTELY FREE.                                        ;;
;;                                                                      ;;
;;THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY      ;;
;;DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS      ;;
;;FOR A PARTICULAR USE.                                             ;;
;;                                                                      ;;
;; ==================================================================== ;;
;;                                                                      ;;
;;V1.1, 8th Apr 2008, Riga, Latvia                                    ;;
;;© Aleksandr Smirnov (ASMI)                                          ;;
;;For AutoCAD 2000 - 2008 (isn't tested in a next versions)         ;;
;;                                                                      ;;
;;                                 http://www.asmitools.com             ;;
;;                                                                      ;;
;; ==================================================================== ;;


(defun c:ordy(/ fPt oldEcho oldNum dFlc dDec fVar cX cY cNum *error*)

(defun *error*(msg)
   (setvar "CMDECHO" 1)
   (if fVar(close fVar))
   (princ)
   ); end of *error*

(princ(strcat "DIMSCALE="(rtos(getvar "DIMSCALE"))" "
        "DIMLFAC="(rtos(setq dFlc(getvar "DIMLFAC")))" "
        "DIMDEC="(rtos(setq dDec(getvar "DIMDEC")))" "
); end strcat
); end princ       
(setvar "CMDECHO" 0)
(if(= 0(getvar "USERI3"))(setvar "USERI3" 1)
   ); end if
(setq cNum(getint(strcat "\nSpecify first point number <"
                        (itoa(getvar "USERI3")) ">: ")))
(if cNum (setvar "USERI3" cNum))
(setq fVar(open(strcase(strcat(getvar "DWGPREFIX")
                       (getvar "DWGNAME") ".csv")) "a"))
(while
   (setq fPt
   (getpoint
            (strcat "\nSpecify point or Right-Click to Quit <"
             (itoa(getvar "USERI3"))">: ")))
   (if(vl-cmdf "_.dimordinate" fPt "_t"
         (strcat
"["(itoa(getvar "USERI3"))"]" "\\P"
      (setq cX(rtos(* dFlc(car fPt))2 dDec)) "mE"
      "\\X"
      (setq cY(rtos(* dFlc(cadr fPt))2 dDec)) "mN"
      ); end strcat
         pause
         ); end vl-cmdf
(progn
(write-line
    (strcat
      (itoa(getvar "USERI3")) "," cX "," cY "," "0")fVar)
(setvar "USERI3"(1+(getvar "USERI3")))
); end progn
); end if
   ); end while
   (close fVar)
   (setvar "CMDECHO" 1)
(princ)
); end of c:ordy

(princ "\n http:\\\\www.AsmiTools.com ")
(princ "\n Type ORDY to tag coordinates ")

BIGAL 发表于 2022-7-5 15:14:40

看看entsel或vl解决方案get textstring get insertionpoint提供了什么,我建议花点时间研究这两种方法,因为它们包含了关于对象的所有基本信息
 

(setq ent (entget (car (entsel))))
(setq inspt (list (nth 1(assoc 10 ent))(nth 2(assoc 10 ent))))
(setq str (cdr (assoc 1 ent)))

 

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

 
还有这个

;;; Dump all methods and properties for selected objects            ;
;;;===================================================================;
;;; DumpIt                                                            ;
;;;-------------------------------------------------------------------;
;;;===================================================================;
(defun C:DumpIt ( / ent)
(while (setq ent (entsel))
   (vlax-Dump-Object
   (vlax-Ename->Vla-Object (car ent)) T
   )
)
(textpage)
(princ)
)

lucky9 发表于 2022-7-5 15:22:44

您好,贝加尔,我查看了您的建议,尝试了上面两个版本的代码,返回用户选择的实体的字符串值。但我无法修改上述代码以获得所需的内容。请帮忙
 
我尝试使用intget而不是getppoint,上面提供了一段代码,但它不起作用。。。

Tharwat 发表于 2022-7-5 15:32:17

你好
例如:

(defun get:text (/ obj)
(princ "\nSelect text :")
(if (setq obj (ssget "_+.:S:E" '((0 . "*TEXT"))))
   (cdr (assoc 1 (entget (ssname obj 0))))
   )
)
;; ... usage of the above function.    ;;
(get:text)

lucky9 发表于 2022-7-5 15:43:16

 
您好,请您将其合并到ORDY中。Lisp程序?

Tharwat 发表于 2022-7-5 15:47:44

 
你好
修改此项:
(while (and (setq fPt (getpoint (strcat "\nSpecify point or Right-Click to Quit <" (itoa (getvar "USERI3")) ">: ")))
         (princ "\nPick a text :")
         (setq txt (ssget "_+.:S:E" '((0 . "*TEXT"))))
         )

 
这是:
 
(write-line (strcat (itoa (getvar "USERI3")) "," cX "," cY "," "0" (cdr (assoc 1 (entget (ssname txt 0))))) fVar)
 
最后,将此变量“txt”本地化如下:
 
(/ fPt oldEcho oldNum dFlc dDec fVar cX cY cNum *error* txt)

lucky9 发表于 2022-7-5 15:57:10

非常感谢你

Tharwat 发表于 2022-7-5 16:08:14

 
随时欢迎你。
页: [1]
查看完整版本: 需要修改此代码