你好几天前我刚开始在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"}") ;; 1 Contents 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)
- )
|