
- (defun c:3C ( / OLDOS p0 p1 P2 P3 P4 P5 p6 p7 p8 p0x p0y p2x p2y x02i y02i pc tTmax)
- (COMMAND "UNDO" "BE")
- (SETQ OLDOS(GETVAR "OSMODE"))
- (SETQ OLDLN (GETVAR "CLAYER"))
- (initget 1)
- (setq p0 (getpoint "\n指定第一个点:"))
- (initget 33)
- (setq p1 (getPOINT p0 "\n指定第二个点:"))
- (initget 33)
- (setq p2 (getPOINT p1 "\n指定第三个点:"))
- (initget 33);设定下次getxxx函数的有效输入
- (setq p3 (getPOINT p2 "\n指定第四个点:"))
- (SETQ P4 (POLAR P3 (ANGLE P2 P1) 100))
- (SETQ P7 (POLAR P0 (ANGLE P2 P1) 100))
- (setq p6 (polar p7 (ANGLE P0 P1) (+ 100
- (sqrt
- (+
- (*(- (nth 0 p0) (nth 0 p1))
- (- (nth 0 p0) (nth 0 p1))
- )
- (*(- (nth 1 p0) (nth 1 p1))
- (- (nth 1 p0) (nth 1 p1))
- )
- )
- )
- )))
- (setq p5 (polar p6 (ANGLE P1 P2) (sqrt
- (+
- (*(- (nth 0 p2) (nth 0 p1))
- (- (nth 0 p2) (nth 0 p1))
- )
- (*(- (nth 1 p2) (nth 1 p1))
- (- (nth 1 p2) (nth 1 p1))
- )
- )
- )
- ))
- ;新增p8变量是为了给文字起点到左边
- (SETQ P8 (POLAR P4 PI 2000))
- ;(SETQ P4 (INTERS P3 (POLAR P3 (ANGLE P2 P1) 65) P5 (POLAR P5 (ANGLE P0 P1) 75) NIL))
- ;(inters 1 2 3 4 模式)取得两条线的交点
- (SETQ p0x (NTH 0 P0))
- (SETQ p0y (NTH 1 P0))
- (SETQ p2x (NTH 0 P2))
- (SETQ p2y (NTH 1 P2))
- (SETQ x02i (- p2x p0x))
- (SETQ y02i (- p2y p0y))
- (SETQ ANG1 (ANGLE P0 P1))
- (SETQ ANG2 (ANGLE P1 P2))
- (SETQ DIST1 (distance p0 p1))
- (SETQ DIST2 (distance p1 p2))
- (if (and p0 p1 P2)
- (progn
- (setq ttmax (STRCAT "4C " (RTOS (distance p0 p1) 2 0) "+" (RTOS (distance p1 p2) 2 0) "+" (RTOS (distance p2 p3) 2 0)))
- (SETVAR "OSMODE" 0)
- (command "layer""m""03-LC" "c" "7" "03-LC" "")
- (COMMAND "PLINE" P0 P1 P2 P3 P4 P5 p6 p7 "C")
- ;以下程序用来新建一个红色图层,然后在红色图层上面标注
- (command "layer""m""03-LC-dim" "c" "1" "03-LC-dim" "")
- (command "dimlinear" p0 p1 (POLAR P0 (ANGLE P1 P2) 500))
- (command "dimlinear" p2 p1 (POLAR P1 (ANGLE P1 P0) 500))
- (command "dimlinear" p2 p3 (POLAR P2 (ANGLE P1 P2) 500))
- (command "dimlinear" p4 p5 (POLAR P4 (ANGLE P3 P4) 500))
- (command "dimlinear" p5 p6 (POLAR P5 (ANGLE P5 P4) 500))
- (command "dimlinear" p6 p7 (POLAR P6 (ANGLE P5 P6) 500))
- (command "layer""m""03-LC-word" "c" "4" "03-LC-word" "")
- (if (> (abs DIST1) (abs DIST2))
- (PROGN
- (setq pc (polar p0 (angle p0 p4) (/ (distance p0 p4) 2)))
- (COMMAND "TEXT" p8 "50"
- "0"
- tTmax)
- )
- (PROGN
- (setq pc (polar p4 (angle p4 p2) (/ (distance p4 p2) 2)))
- (COMMAND "TEXT" p8 "50"
- "0"
- tTmax)
- )
- )
- )
- )
-
- (SETVAR "OSMODE" OLDOS)
- (SETVAR "CLAYER" OLDLN)
- (COMMAND "UNDO" "E")
- (PRINC)
- )
|