需要修改此代码
我需要修改一下这段代码,我希望这段代码也包括选定的文本。例如,如果我选择单行或多行文本的一个点,它也应该包括该文本。
输出:
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 ") 看看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)
)
您好,贝加尔,我查看了您的建议,尝试了上面两个版本的代码,返回用户选择的实体的字符串值。但我无法修改上述代码以获得所需的内容。请帮忙
我尝试使用intget而不是getppoint,上面提供了一段代码,但它不起作用。。。 你好
例如:
(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)
您好,请您将其合并到ORDY中。Lisp程序?
你好
修改此项:
(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) 非常感谢你
随时欢迎你。
页:
[1]