plackowski 发表于 2022-7-5 23:49:00

显示变量和字符

你好几天前我刚开始在AutoLISP中工作,我遇到了一个问题。我需要创建一条尺寸线,其中尺寸值取决于输入值。因此,如果输入为y,那么尺寸线上的文字应等于4.5*(y+1)英寸,并且它还需要具有0.75的字符宽度。目前,它只显示4 1/2“。据我所知,这将是一个实数,这意味着我不能将其与英寸符号连接。任何帮助将不胜感激!
 
 
(defun c:retan (/ p1 p2 p3 p4 x y i j)(setvar "osmode" 0)

(setq p1 (getpoint "\nfirst corner of rectangle: "))
(setq x (getint "\nEnter Horizontal Count: "))
(setq y (getint "\nEnter Vertical Count: "))

(setq p3 (list (+ (+ 1.625 (* 0.8125 (- x 1))) (car p1))(+ (+ 1.625 (* 0.8125 (- y 1))) (cadr p1))))
(setq p2 (list (car p1)(cadr p3)))
(setq p4 (list (car p3)(cadr p1)))
(command "pline" p1 p2 p3 p4 "c") ;c closes the rectangle's fourth side

(entmakex (list
(cons 0 "DIMENSION")
(cons 100 "AcDbEntity")
(cons 8 "E-DIMS")                                                       ;; 8 Layer
(cons 100 "AcDbDimension")
(cons 10 (list (- (car P1) 0.7) (cadr P2) 0))   ;; 10 Arrow Node
(cons 11 (list (- (car P1) 0.9) (/ (+ (cadr P2)(cadr P1)) 2) 0))      ;; 11 Text Position
(cons 70 160)
(cons 1 "{\\W0.75;4 1/2\"}")                                          ;; 1Contents of Dimension Textbox
(cons 71 5)                                                             ;; 71 Text Alignment (5=centered)
(cons 42 0.8125)
(cons 53 1.5708)                                                      ;; 53 Text Rotation
(cons 3 "REW-1_.125txt")
(cons 100 "AcDbAlignedDimension")
(cons 13 P1)                                                            ;; 13 point on line
(cons 14 P2)                                                            ;; 14 point on line
(cons 50 1.5708)                                                      ;; 50 Angle (radians) 1.5708
(cons 100 "AcDbRotatedDimension")))



(setvar "osmode" 16383)(princ)
)

ymg3 发表于 2022-7-6 00:34:10


(cons 1 (strcat"{\\W0.75;" (rtos (* 4.5 (1+ y)) 4 2) "}"))

 
ymg公司

plackowski 发表于 2022-7-6 01:14:04

谢谢ymg,成功了!
页: [1]
查看完整版本: 显示变量和字符