明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 965|回复: 4

标高标注修改

[复制链接]
发表于 2020-6-10 19:25 | 显示全部楼层 |阅读模式
1明经币
  1. ;;;标高绘制程序 VER 1.20   MADE BY HB.LEE  2006.05.17
  2. ;;;本程序得到[url]www.xdcad.net[/url] eachy斑竹的细心指导! 作者:Dallas_whu
  3. ;;;2006年09月18日xshrimp更正一个bug,增加dimsc
  4. ;;;MAIL PROGRAM
  5. ;(PRINC "\n标高绘制程序, 执行命令: BG ")
  6. (DEFUN C:BGHZ (/    &OLDERR&   *$MYERROR$*         BGBLS        BGDOTS
  7.                 BGNUMLST   BG_ID      BSPOINT     HTBLS        I
  8.                 NUM       OHEIGHTSTR OLDCMD     OLDCUR        OLDDIMZ
  9.                 OLDLAY       OLDOS      OLDSTY     ORGPOINT   ORGPTY
  10.                 SYMLST     HTBL
  11.               )
  12.   (VL-LOAD-COM)
  13.   ;;;错误处理函数
  14.   (DEFUN *$MYERROR$* (MSG)
  15.     ;(COMMAND "_.ERASE" SSTXTS "")
  16.     (COMMAND ".UCS" "P")
  17.     (SETVAR "CLAYER" OLDLAY)
  18.     (SETVAR "OSMODE" OLDOS)
  19.     (SETVAR "DIMZIN" OLDDIMZ)
  20.     (SETVAR "TEXTSTYLE" OLDSTY)
  21.     (SETVAR "CURSORSIZE" OLDCUR)
  22.     (SETQ *ERROR* &OLDERR&)
  23.     (SETVAR "CMDECHO" OLDCMD)
  24.     (REDRAW)
  25.     (PRINC)
  26.   )
  27.   (SETQ &OLDERR& *ERROR*)
  28.   (SETQ *ERROR* *$MYERROR$*)
  29.   ;;;系统变量初始化
  30.   (SETQ OLDCMD (GETVAR "CMDECHO"))
  31.   (SETQ OLDLAY (GETVAR "CLAYER"))
  32.   (SETQ OLDOS (GETVAR "OSMODE"))
  33.   (SETQ OLDDIMZ (GETVAR "DIMZIN"))
  34.   (SETQ OLDSTY (GETVAR "TEXTSTYLE"))
  35.   (SETQ OLDCUR (GETVAR "CURSORSIZE"));光标大小
  36.   (SETVAR "CMDECHO" 0)
  37.   (SETVAR "OSMODE" 0)
  38.   (SETVAR "DIMZIN" 0)
  39.   (COMMAND ".UNDO" "BE")
  40.   (COMMAND ".UCS" "W")
  41.   (SETQ HPI (* 0.5 PI))
  42.   (SETQ TPI (* 1.5 PI))
  43.   (SETQ BG_ID T)
  44.   (SETVAR "OSMODE" (+ 1 2 32 128 512))
  45.   ;;;取得测量比例、绘图比例、小数位数及基准点、插入点
  46.   (WHILE BG_ID
  47.     (INITGET 128 "O B H D")
  48.     ;;;设置初始测量比例
  49.     (SETQ BGBL (VLAX-LDATA-GET "BGBL" "BGBL"))
  50.     (IF (NOT BGBL) (SETQ BGBL (RTOS (GETVAR "DIMLFAC") 2 2)))
  51.     ;;;设置初始绘图比例
  52.     (SETQ HTBL (VLAX-LDATA-GET "BGBL" "HTBL"))
  53.     (IF (NOT HTBL) (SETQ HTBL (RTOS (GETVAR "DIMSCALE") 2 2)))
  54.     ;;;设置初始小数位数
  55.     (SETQ BGDOT (VLAX-LDATA-GET "BGDOT" "BGDOT"))
  56.     (IF (NOT BGDOT) (SETQ BGDOT "3"))
  57.     ;;;信息提示
  58.     (PRINC (STRCAT "\n***  当前标准样式测量比例为 [1:" BGBL "].绘图比例为 [1:" HTBL "]. 小数位数为 " BGDOT " 位.  ***"))
  59.     ;;;输入关键字或得到基准点、插入点
  60.     (SETQ BSPOINT (GETPOINT "\n请选择标注的起始点或[改标高基点(O)/测量比例(B)/绘图比例(H)/小数位数(D)]:"))
  61.     (COND
  62.       ;;;设置基准点或零米点
  63.       ((OR (= BSPOINT "O") (= BSPOINT "o"))
  64.         (SETQ ORGPOINT (GETPOINT "\n选择标注标高的基点["±0.00"点]:"))
  65.         (SETQ OHEIGHTSTR (RTOS (CADR ORGPOINT) 2 3))
  66.         (VLAX-LDATA-PUT "ORGPOINTY" "ORGPOINTY" OHEIGHTSTR)
  67.         (PRINC
  68.           (STRCAT "\n选择的基点["±0.00"点]在当前坐标系中的高度为: " OHEIGHTSTR " 单位.")
  69.         )
  70.       )
  71.       ;;;设置测量比例
  72.       ((OR (= BSPOINT "b") (= BSPOINT "B"))
  73.         (SETQ BGBLS (GETREAL (STRCAT "请输入新的标高测量比例<" BGBL ">:")))
  74.         (IF (NOT BGBLS)
  75.           (SETQ BGBLS (ATOF BGBL))
  76.         )
  77.         (VLAX-LDATA-PUT "BGBL" "BGBL" (RTOS BGBLS 2 2))
  78.       )
  79.       ;;;设置绘图比例
  80.       ((OR (= BSPOINT "h") (= BSPOINT "H"))
  81.         (SETQ HTBLS (GETREAL (STRCAT "请输入新的标高绘图比例<" HTBL ">:")))
  82.         (IF (NOT HTBLS)
  83.           (SETQ HTBLS (ATOF HTBL))
  84.         )
  85.         (VLAX-LDATA-PUT "BGBL" "HTBL" (RTOS HTBLS 2 2))
  86.       )
  87.       ;;;设置小数位数
  88.       ((OR (= BSPOINT "d") (= BSPOINT "D"))
  89.         (SETQ BGDOTS (GETINT (STRCAT "请输入新的小数位数<" BGDOT ">:")))
  90.         (IF (NOT BGDOTS)
  91.           (SETQ BGDOTS (ATOI BGDOT))
  92.         )
  93.         (VLAX-LDATA-PUT "BGDOT" "BGDOT" (ITOA BGDOTS))
  94.       )
  95.       ;;;得到坐标,设置插入点
  96.       ((= (TYPE BSPOINT) 'LIST)
  97.         (SETQ BG_ID NIL)
  98.         ;;;如果没有设置基准点,则设当前插入点为基准点
  99.         (IF (NOT (VLAX-LDATA-GET "ORGPOINTY" "ORGPOINTY"))
  100.           (PROGN
  101.             (VLAX-LDATA-PUT "ORGPOINTY" "ORGPOINTY" (RTOS (CADR BSPOINT) 2 3))
  102.           )
  103.         )
  104.       )
  105.       (T (PRINC "\n无效的选择或者输入!请重新确认."))
  106.     )
  107.   ); END WHILE
  108.   (SETQ DIMSC (ATOF HTBL));测量比例
  109.   ;;;取得标高文字的默认值
  110.   (SETQ BSPTX (CAR BSPOINT))
  111.   (SETQ BSPTY (CADR BSPOINT))
  112.   (SETQ ORGPTY (VLAX-LDATA-GET "ORGPOINTY" "ORGPOINTY"))
  113.   (IF (NOT ORGPTY) (SETQ ORGPTY (RTOS BSPTY 2 3)))
  114.   (SETQ DEF_BGTXT (RTOS (* 0.001 (- BSPTY (ATOF ORGPTY)) (ATOF BGBL)) 2 (ATOI BGDOT)))
  115.   (PRINC "\n若同时标注多个,请将输入数字用逗号(",")隔开. 单位:m.")
  116.   (SETQ BGTXT (GETSTRING (STRCAT "\n输入标高文字<" DEF_BGTXT ">:")))
  117.   (IF (= BGTXT "") (SETQ BGTXT DEF_BGTXT))
  118.   ;;;将输入的单个或多个标高文字组成表
  119.   (SETQ BGTXT (STRCAT "(" BGTXT ")"))
  120.   (SETQ SYMLST (LIST "," ","))
  121.   (FOREACH SYMBOL SYMLST
  122.     (WHILE (VL-STRING-SEARCH SYMBOL BGTXT)
  123.       (SETQ BGTXT (VL-STRING-SUBST " " SYMBOL BGTXT))
  124.     )
  125.   )
  126.   (SETQ BGLST (READ BGTXT))
  127.   ;;;判断表中的元素是否为数值型,否则剔除
  128.   (SETQ I 0)
  129.   (SETQ BGNUMLST NIL)
  130.   (REPEAT (LENGTH BGLST)
  131.     (SETQ NUM (NTH I BGLST))
  132.     (IF (NUMBERP NUM)
  133.       (SETQ BGNUMLST (CONS NUM BGNUMLST))
  134.     )
  135.     (SETQ I (1+ I))
  136.   )
  137.   (SETQ BGLST (REVERSE BGNUMLST))
  138.   ;;;如果表中数值大于1个,提示标高标注在同一高度
  139.   (IF (> (LENGTH BGLST) 1)
  140.     (PROGN
  141.       (INITGET "Yes No")
  142.       (IF (NOT YESORNO)
  143.         (SETQ YESORNO "Y")
  144.       )
  145.       (SETQ YESNO (GETSTRING (STRCAT "\n是否将标高数字标在同一位置<" (STRCASE YESORNO ) ">:")))
  146.       (IF (= "" YESNO)
  147.         (SETQ YESNO YESORNO)
  148.         (SETQ YESORNO (STRCASE YESNO)) ;保留输入的判断,下次执行时自动转换
  149.       )
  150.     )
  151.   )
  152.   (SETVAR "OSMODE" 0)
  153.   ;;;按照要求写出初始字符串
  154.   (DRAW_FIRST)
  155.   ;;;标高符号绘制预览及绘制
  156.   (VIEW_BG)
  157.   ;;;如果多个标高字符串在不同地方标注,则执行此函数
  158.   (IF_COPYBG)
  159.   ;;;恢复系统变量
  160.   (SETVAR "CLAYER" OLDLAY)
  161.   (SETVAR "OSMODE" OLDOS)
  162.   (SETVAR "DIMZIN" OLDDIMZ)
  163.   (SETVAR "TEXTSTYLE" OLDSTY)
  164.   (SETVAR "CURSORSIZE" OLDCUR)
  165.   (COMMAND ".UNDO" "E")
  166.   (COMMAND ".UCS" "P")
  167.   (SETVAR "CMDECHO" OLDCMD)
  168.   (SETQ *ERROR* &OLDERR&)
  169.   (REDRAW)
  170.   (PRINC)
  171. )
  172. ;;;按照要求写出初始字符串,文字为右下对齐方式
  173. (DEFUN DRAW_FIRST (/ CHK_LAYER     CHK_STYLE   DEF_BGTXTS     I
  174.                     NBGLST     TBOX         TEMPTXT     TEXTSTR
  175.                     TLENGTH     TXTLTHLST
  176.                   )
  177.   (SETQ SSPLINES NIL)
  178.   (SETQ SSPLINES (SSADD))
  179.   ;;;检查并设置"标高标注"为当前图层
  180.   (SETQ CHK_LAYER (TBLSEARCH "LAYER" "标高标注"))
  181.   (IF (= CHK_LAYER NIL)
  182.     (PROGN
  183.       (ENTMAKE (LIST
  184.                  '(0 . "LAYER")
  185.                  '(100 . "AcDbSymbolTableRecord")
  186.                  '(100 . "AcDbLayerTableRecord")
  187.                  '(6 . "continuous")    ;线型
  188.                  '(62 . 3)        ;图层颜色
  189.                  '(70 . 0)        ;图层状态
  190.                  (CONS 2 "标高标注")    ;图层名
  191.                )
  192.       )
  193.     )
  194.   )
  195.   (SETVAR "CLAYER" "标高标注")
  196.   ;取得初始标高字符串的插入点
  197.   (SETQ
  198.     PT1    (LIST (+ BSPTX (* DIMSC 20.0)) (+ BSPTY (* DIMSC 3.0)) 0.00)
  199.   )
  200.   ;;;检查并设置"ROMANS"为当前文字样式
  201.   (SETQ CHK_STYLE (TBLSEARCH "STYLE" "ROMANS"))
  202.   (IF (= CHK_STYLE NIL)
  203.     (ENTMAKE (LIST
  204.                '(0 . "STYLE")        ;对象名称
  205.                '(100 . "AcDbSymbolTableRecord")
  206.                '(100
  207.                   .
  208.                   "AcDbTextStyleTableRecord"
  209.                 )            ;子类标记
  210.                '(2 . "ROMANS")        ;字体样式名
  211.                '(70 . 0)        ;标注位码
  212.                '(40 . 0.0)        ;文字高度
  213.                '(41 . 0.70)        ;宽度系数
  214.                '(50 . 0.0)        ;字斜角
  215.                '(71 . 0)        ;文字生成标注位码2=反向,4=颠倒
  216.                '(3 . "tssdeng.shx")    ;西文字体名
  217.                '(4 . "tssdchn.shx")    ;中文字体名
  218.              ) ;_ 结束LIST
  219.     ) ;_ 结束ENTMAKE
  220.   ) ;_ 结束IF
  221.   (SETVAR "TEXTSTYLE" "ROMANS")
  222.   (SETQ I 0)
  223.   (SETQ SSTXTS (SSADD))
  224.   (SETQ TXTPT (POLAR PT1 HPI (* DIMSC 0.6)));文字插入点
  225.   (IF (OR (= YESNO "y") (= YESNO "Y"))
  226.     (PROGN
  227.       (SETQ TXTLTHLST NIL)
  228.       (SETQ BGLST (VL-SORT BGLST '<));标高数值由小到大排序,剔除重复数值
  229.       (REPEAT (LENGTH BGLST)
  230.         (SETQ NBGLST (NTH I BGLST))
  231.         (IF NBGLST
  232.           (PROGN
  233.             ;按照要求设置小数位数
  234.             (SETQ TEXTSTR (RTOS (ATOF (VL-PRINC-TO-STRING NBGLST)) 2 (ATOI BGDOT)))
  235.             ;若字符串为"0.00",则变成"±0.00"
  236.             (IF (= (RTOS 0 2 (ATOI BGDOT)) TEXTSTR) (SETQ TEXTSTR (STRCAT "%%P" TEXTSTR)))
  237.           )
  238.         )
  239.         (COMMAND "_.TEXT" "J" "BR" TXTPT (* DIMSC 3.0) 0 TEXTSTR)
  240.         (SETQ TEMPTXT (ENTLAST))
  241.         (SETQ TBOX (TEXTBOX (IF (EQ (TYPE TEMPTXT) 'ENAME) (ENTGET TEMPTXT) TEMPTXT)))
  242.         (SETQ TLENGTH (- (CAADR TBOX) (CAAR TBOX)));取得字符串的实际长度
  243.         (SETQ TXTLTHLST (CONS TLENGTH TXTLTHLST))  ;将字符长度组成列表
  244.         (SETQ SSTXTS (SSADD TEMPTXT SSTXTS))
  245.         (SETQ TXTPT (POLAR TXTPT HPI (* DIMSC 4)))
  246.         (SETQ I (1+ I))
  247.       )
  248.     )
  249.     (PROGN
  250.       (SETQ TXTLTHLST NIL)
  251.       (IF (> (LENGTH BGLST) 1)
  252.         (PROGN
  253.           (SETQ BGLST (VL-SORT BGLST '<));标高数值由小到大排序,剔除重复数值
  254.           (SETQ TXTPT (POLAR PT1 HPI (* DIMSC 0.6)))
  255.           (IF (= 0 (ATOF DEF_BGTXT))
  256.             ;若字符串为"0.00",则变成"±0.00"
  257.             (SETQ DEF_BGTXTS (STRCAT "%%P" DEF_BGTXT))
  258.             (SETQ DEF_BGTXTS DEF_BGTXT)
  259.           )
  260.           (COMMAND "_.TEXT" "J" "BR" TXTPT (* DIMSC 3.0) 0 DEF_BGTXTS)
  261.           (SETQ TEMPTXT (ENTLAST))
  262.           (SETQ SSTXTS (SSADD TEMPTXT SSTXTS))
  263.         )
  264.         (PROGN
  265.           (SETQ TXTPT (POLAR PT1 HPI (* DIMSC 0.6)))
  266.           ;按照要求设置小数位数
  267.           (SETQ TEXTSTR (RTOS (ATOF (VL-PRINC-TO-STRING (NTH 0 BGLST))) 2 (ATOI BGDOT)))
  268.           ;若字符串为"0.00",则变成"±0.00"
  269.           (IF (= (RTOS 0 2 (ATOI BGDOT)) TEXTSTR) (SETQ TEXTSTR (STRCAT "%%P" TEXTSTR)))
  270.           (COMMAND "_.TEXT" "J" "BR" TXTPT (* DIMSC 3.0) 0 TEXTSTR)
  271.           (SETQ TEMPTXT (ENTLAST))
  272.           (SETQ SSTXTS (SSADD TEMPTXT SSTXTS))
  273.         )
  274.       )
  275.       (SETQ TBOX (TEXTBOX (IF (EQ (TYPE TEMPTXT) 'ENAME) (ENTGET TEMPTXT) TEMPTXT)))
  276.       (SETQ TLENGTH (-(CAADR TBOX) (CAAR TBOX)))      ;取得字符的长度
  277.       (SETQ TXTLTHLST (CONS TLENGTH TXTLTHLST))       ;将字符长度组成列表
  278.     )
  279.   );END IF
  280.   (SETQ TXTLTHLST (VL-SORT TXTLTHLST '>))             ;对表中长度数值由大到小排序
  281.   (SETQ BG_LENGTH (+ (NTH 0 TXTLTHLST) (* 2.0 DIMSC)));求出表中最大值,设置标高线的长度
  282. );END DEFUN
  283. ;;;标高符号绘制预览及绘制
  284. (DEFUN VIEW_BG (/ LOOP_ID VPOINTENT)
  285.   (SETQ LOOP_ID T)
  286.   (SETVAR "CURSORSIZE" 1);将光标大小设置为1,最小尺寸
  287.   (PRINC "\n选择标高文字的插入点:")
  288.   (WHILE LOOP_ID
  289.     (SETQ VPOINTENT (GRREAD T 4 0))
  290.     (IF (= 5 (CAR VPOINTENT));鼠标跟踪
  291.       (PROGN
  292.         (REDRAW)
  293.         (SETQ VPOINT (CADR VPOINTENT))
  294.         (SETQ VPTX (CAR VPOINT))
  295.         (SETQ VPTY (CADR VPOINT))
  296.         (IF (< BSPTX VPTX);鼠标在插入点右边
  297.           (COND
  298.             ;;;以下四AND表示鼠标在第一象限时的预览
  299.             ((AND (<= VPTX (+ BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  300.                (< BSPTY VPTY)
  301.                (<= VPTY (+ BSPTY (* DIMSC 2.0)))
  302.              )
  303.               (SETQ PT1 (LIST (+ BSPTX (+ BG_LENGTH (* DIMSC 5.0))) (+ BSPTY (* DIMSC 2.0)) 0.00))
  304.               (SETQ PT2 (POLAR PT1 PI BG_LENGTH))
  305.               (SETQ PT3 (POLAR PT2 PI (* DIMSC 4)))
  306.               (SETQ PT4 (POLAR (POLAR PT2 PI (* DIMSC 2)) TPI (* DIMSC 2)))
  307.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 3)))
  308.               (GRVECS (LIST 1 PT1 PT3 1 PT3 PT4 1 PT4 PT2 1 BSPOINT PT5))
  309.               (SETQ MOVEPT (POLAR PT1 HPI (* DIMSC 0.6)))
  310.               ;文字随鼠标移动,并改文字为右下对齐方式
  311.               (MOVE_TEXTS1)
  312.             )
  313.             ((AND (> VPTX (+ BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  314.                (< BSPTY VPTY)
  315.                (<= VPTY (+ BSPTY (* DIMSC 2.0)))
  316.              )
  317.               (SETQ PT1 (LIST VPTX (+ BSPTY (* DIMSC 2.0)) 0.00))
  318.               (SETQ PT2 (POLAR PT1 PI BG_LENGTH))
  319.               (SETQ PT3 (POLAR PT2 PI (* DIMSC 4)))
  320.               (SETQ PT4 (POLAR (POLAR PT2 PI (* DIMSC 2)) TPI (* DIMSC 2)))
  321.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 3)))
  322.               (GRVECS (LIST 2 PT1 PT3 2 PT3 PT4 2 PT4 PT2 2 BSPOINT PT5))
  323.               (MOVE_TEXTS1)
  324.             )
  325.             ((AND (> VPTX (+ BSPTX BG_LENGTH))
  326.                (< BSPTY VPTY)
  327.                (> VPTY (+ BSPTY (* DIMSC 2.0)))
  328.              )
  329.               (SETQ PT1 VPOINT)
  330.               (SETQ PT2 (POLAR PT1 PI BG_LENGTH))
  331.               (SETQ PT3 (POLAR PT2 TPI (ABS (- VPTY BSPTY))))
  332.               (SETQ PT4 (POLAR (POLAR PT3 HPI (* DIMSC 2.0)) PI (* DIMSC 2.0)))
  333.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 4.0)))
  334.               (SETQ PT6 (POLAR PT3 0 (* DIMSC 3.0)))
  335.               (GRVECS (LIST 4    PT1  PT2  4    PT2  PT3     4    PT3  PT4
  336.                         4    PT4  PT5  4    PT5  PT3     4    BSPOINT
  337.                         PT6
  338.                       )
  339.               )
  340.               (MOVE_TEXTS1)
  341.             )
  342.             ((AND (< VPTX (+ BSPTX BG_LENGTH))
  343.                (< BSPTY VPTY)
  344.                (> VPTY (+ BSPTY (* DIMSC 2.0)))
  345.              )
  346.               (SETQ PT1 (LIST (+ BSPTX BG_LENGTH) VPTY 0.0))
  347.               (SETQ PT2 (POLAR PT1 PI BG_LENGTH))
  348.               (SETQ PT3 (POLAR PT2 TPI (ABS (- VPTY BSPTY))))
  349.               (SETQ PT4 (POLAR (POLAR PT3 HPI (* DIMSC 2.0)) PI (* DIMSC 2.0)))
  350.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 4.0)))
  351.               (GRVECS
  352.                 (LIST 5 PT1 PT2 5 PT2 PT3 5 PT3 PT4 5 PT4 PT5 5 PT5 PT3)
  353.               )
  354.               (MOVE_TEXTS1)
  355.             )
  356.             ;;;以下四AND表示鼠标在第四象限时的预览
  357.             ((AND (<= VPTX (+ BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  358.                (> BSPTY VPTY)
  359.                (>= VPTY (- BSPTY (* DIMSC 2.0)))
  360.              )
  361.               (SETQ PT1 (LIST (+ BSPTX (+ BG_LENGTH (* DIMSC 5.0))) (- BSPTY (* DIMSC 2.0)) 0.00))
  362.               (SETQ PT2 (POLAR PT1 PI BG_LENGTH))
  363.               (SETQ PT3 (POLAR PT2 PI (* DIMSC 4)))
  364.               (SETQ PT4 (POLAR (POLAR PT2 PI (* DIMSC 2)) HPI (* DIMSC 2)))
  365.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 3)))
  366.               (GRVECS (LIST 1 PT1 PT3 1 PT3 PT4 1 PT4 PT2 1 BSPOINT PT5))
  367.               ;文字随鼠标移动,并改文字为右上对齐方式
  368.               (MOVE_TEXTS2)
  369.             )
  370.             ((AND (> VPTX (+ BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  371.                (> BSPTY VPTY)
  372.                (>= VPTY (- BSPTY (* DIMSC 2.0)))
  373.              )
  374.               (SETQ PT1 (LIST VPTX (- BSPTY (* DIMSC 2.0)) 0.00))
  375.               (SETQ PT2 (POLAR PT1 PI BG_LENGTH))
  376.               (SETQ PT3 (POLAR PT2 PI (* DIMSC 4)))
  377.               (SETQ PT4 (POLAR (POLAR PT2 PI (* DIMSC 2)) HPI (* DIMSC 2)))
  378.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 3)))
  379.               (GRVECS (LIST 2 PT1 PT3 2 PT3 PT4 2 PT4 PT2 2 BSPOINT PT5))
  380.               (MOVE_TEXTS2)
  381.             )
  382.             ((AND (> VPTX (+ BSPTX BG_LENGTH))
  383.                (> BSPTY VPTY)
  384.                (<= VPTY (- BSPTY (* DIMSC 2.0)))
  385.              )
  386.               (SETQ PT1 VPOINT)
  387.               (SETQ PT2 (POLAR PT1 PI BG_LENGTH))
  388.               (SETQ PT3 (POLAR PT2 HPI (- BSPTY VPTY)))
  389.               (SETQ PT4 (POLAR (POLAR PT3 TPI (* DIMSC 2.0)) PI (* DIMSC 2.0)))
  390.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 4.0)))
  391.               (SETQ PT6 (POLAR PT3 0 (* DIMSC 5.0)))
  392.               (GRVECS (LIST 4    PT1  PT2  4    PT2  PT3     4    PT3  PT4
  393.                         4    PT4  PT5  4    PT5  PT3     4    BSPOINT
  394.                         PT6
  395.                       )
  396.               )
  397.               (MOVE_TEXTS2)
  398.             )
  399.             ((AND (< VPTX (+ BSPTX BG_LENGTH))
  400.                (> BSPTY VPTY)
  401.                (<= VPTY (- BSPTY (* DIMSC 2.0)))
  402.              )
  403.               (SETQ PT1 (LIST (+ BSPTX BG_LENGTH) VPTY 0.0))
  404.               (SETQ PT2 (POLAR PT1 PI BG_LENGTH))
  405.               (SETQ PT3 (POLAR PT2 HPI (- BSPTY VPTY)))
  406.               (SETQ PT4 (POLAR (POLAR PT3 TPI (* DIMSC 2.0)) PI (* DIMSC 2.0)))
  407.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 4.0)))
  408.               (GRVECS
  409.                 (LIST 5 PT1 PT2 5 PT2 PT3 5 PT3 PT4 5 PT4 PT5 5 PT5 PT3)
  410.               )
  411.               (MOVE_TEXTS2)
  412.             )
  413.           )
  414.           ;;;鼠标在插入点左边
  415.           (COND
  416.             ;;;以下四AND表示鼠标在第二象限时的预览
  417.             ((AND (>= VPTX (- BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  418.                (< BSPTY VPTY)
  419.                (<= VPTY (+ BSPTY (* DIMSC 2.0)))
  420.              )
  421.               (SETQ PT1 (LIST (- BSPTX (+ BG_LENGTH (* DIMSC 5.0))) (+ BSPTY (* DIMSC 2.0)) 0.00))
  422.               (SETQ PT2 (POLAR PT1 0 BG_LENGTH))
  423.               (SETQ PT3 (POLAR PT2 0 (* DIMSC 4)))
  424.               (SETQ PT4 (POLAR (POLAR PT2 0 (* DIMSC 2)) TPI (* DIMSC 2)))
  425.               (SETQ PT5 (POLAR PT4 PI (* DIMSC 3)))
  426.               (GRVECS (LIST 1 PT1 PT3 1 PT3 PT4 1 PT4 PT2 1 BSPOINT PT5))
  427.               ;文字随鼠标移动,并改文字为左下对齐方式
  428.               (MOVE_TEXTS3)
  429.             )
  430.             ((AND (< VPTX (- BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  431.                (< BSPTY VPTY)
  432.                (<= VPTY (+ BSPTY (* DIMSC 2.0)))
  433.              )
  434.               (SETQ PT1 (LIST VPTX (+ BSPTY (* DIMSC 2.0)) 0.00))
  435.               (SETQ PT2 (POLAR PT1 0 BG_LENGTH))
  436.               (SETQ PT3 (POLAR PT2 0 (* DIMSC 3)))
  437.               (SETQ PT4 (POLAR (POLAR PT2 0 (* DIMSC 2)) TPI (* DIMSC 2)))
  438.               (SETQ PT5 (POLAR PT4 PI (* DIMSC 3)))
  439.               (GRVECS (LIST 2 PT1 PT3 2 PT3 PT4 2 PT4 PT2 2 BSPOINT PT5))
  440.               (MOVE_TEXTS3)
  441.             )
  442.             ((AND (< VPTX (- BSPTX BG_LENGTH))
  443.                (< BSPTY VPTY)
  444.                (> VPTY (+ BSPTY (* DIMSC 2.0)))
  445.              )
  446.               (SETQ PT1 VPOINT)
  447.               (SETQ PT2 (POLAR PT1 0 BG_LENGTH))
  448.               (SETQ PT3 (POLAR PT2 TPI (ABS (- VPTY BSPTY))))
  449.               (SETQ PT4 (POLAR (POLAR PT3 HPI (* DIMSC 2.0)) 0 (* DIMSC 2.0)))
  450.               (SETQ PT5 (POLAR PT4 PI (* DIMSC 4.0)))
  451.               (SETQ PT6 (POLAR PT3 PI (* DIMSC 3.0)))
  452.               (GRVECS (LIST 4    PT1  PT2  4    PT2  PT3     4    PT3  PT4
  453.                         4    PT4  PT5  4    PT5  PT3     4    BSPOINT
  454.                         PT6
  455.                       )
  456.               )
  457.               (MOVE_TEXTS3)
  458.             )
  459.             ((AND (>= VPTX (- BSPTX BG_LENGTH))
  460.                (< BSPTY VPTY)
  461.                (> VPTY (+ BSPTY (* DIMSC 2.0)))
  462.              )
  463.               (SETQ PT1 (LIST (- BSPTX BG_LENGTH) VPTY 0.0))
  464.               (SETQ PT2 (POLAR PT1 0 BG_LENGTH))
  465.               (SETQ PT3 (POLAR PT2 TPI (ABS (- VPTY BSPTY))))
  466.               (SETQ PT4 (POLAR (POLAR PT3 HPI (* DIMSC 2.0)) PI (* DIMSC 2.0)))
  467.               (SETQ PT5 (POLAR PT4 0 (* DIMSC 4.0)))
  468.               (GRVECS
  469.                 (LIST 5 PT1 PT2 5 PT2 PT3 5 PT3 PT4 5 PT4 PT5 5 PT5 PT3)
  470.               )
  471.               (MOVE_TEXTS3)
  472.             )
  473.             ;;;以下四AND表示鼠标在第三象限时的预览
  474.             ((AND (>= VPTX (- BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  475.                (> BSPTY VPTY)
  476.                (>= VPTY (- BSPTY (* DIMSC 2.0)))
  477.              )
  478.               (SETQ PT1 (LIST (- BSPTX (+ BG_LENGTH (* DIMSC 5.0))) (- BSPTY (* DIMSC 2.0)) 0.00))
  479.               (SETQ PT2 (POLAR PT1 0 BG_LENGTH))
  480.               (SETQ PT3 (POLAR PT2 0 (* DIMSC 4)))
  481.               (SETQ PT4 (POLAR (POLAR PT2 0 (* DIMSC 2)) HPI (* DIMSC 2)))
  482.               (SETQ PT5 (POLAR PT4 PI (* DIMSC 3)))
  483.               (GRVECS (LIST 1 PT1 PT3 1 PT3 PT4 1 PT4 PT2 1 BSPOINT PT5))
  484.               ;文字随鼠标移动,并改文字为左上对齐方式
  485.               (MOVE_TEXTS4)
  486.             )
  487.             ((AND (< VPTX (- BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  488.                (> BSPTY VPTY)
  489.                (>= VPTY (- BSPTY (* DIMSC 2.0)))
  490.              )
  491.               (SETQ PT1 (LIST VPTX (- BSPTY (* DIMSC 2.0)) 0.00))
  492.               (SETQ PT2 (POLAR PT1 0 BG_LENGTH))
  493.               (SETQ PT3 (POLAR PT2 0 (* DIMSC 4)))
  494.               (SETQ PT4 (POLAR (POLAR PT2 0 (* DIMSC 2)) HPI (* DIMSC 2)))
  495.               (SETQ PT5 (POLAR PT4 PI (* DIMSC 3)))
  496.               (GRVECS (LIST 2 PT1 PT3 2 PT3 PT4 2 PT4 PT2 2 BSPOINT PT5))
  497.               (MOVE_TEXTS4)
  498.             )
  499.             ((AND (< VPTX (- BSPTX BG_LENGTH))
  500.                (> BSPTY VPTY)
  501.                (< VPTY (- BSPTY (* DIMSC 2.0)))
  502.              )
  503.               (SETQ PT1 VPOINT)
  504.               (SETQ PT2 (POLAR PT1 0 BG_LENGTH))
  505.               (SETQ PT3 (POLAR PT2 HPI (ABS (- VPTY BSPTY))))
  506.               (SETQ PT4 (POLAR (POLAR PT3 TPI (* DIMSC 2.0)) 0 (* DIMSC 2.0)))
  507.               (SETQ PT5 (POLAR PT4 PI (* DIMSC 4.0)))
  508.               (SETQ PT6 (POLAR PT3 PI (* DIMSC 3.0)))
  509.               (GRVECS (LIST 4    PT1  PT2  4    PT2  PT3     4    PT3  PT4
  510.                         4    PT4  PT5  4    PT5  PT3     4    BSPOINT
  511.                         PT6
  512.                       )
  513.               )
  514.               (MOVE_TEXTS4)
  515.             )
  516.             ((AND (>= VPTX (- BSPTX BG_LENGTH))
  517.                (> BSPTY VPTY)
  518.                (< VPTY (- BSPTY (* DIMSC 2.0)))
  519.              )
  520.               (SETQ PT1 (LIST (- BSPTX BG_LENGTH) VPTY 0.0))
  521.               (SETQ PT2 (POLAR PT1 0 BG_LENGTH))
  522.               (SETQ PT3 (POLAR PT2 HPI (ABS (- VPTY BSPTY))))
  523.               (SETQ PT4 (POLAR (POLAR PT3 TPI (* DIMSC 2.0)) 0 (* DIMSC 2.0)))
  524.               (SETQ PT5 (POLAR PT4 PI (* DIMSC 4.0)))
  525.               (GRVECS
  526.                 (LIST 5 PT1 PT2 5 PT2 PT3 5 PT3 PT4 5 PT4 PT5 5 PT5 PT3)
  527.               )
  528.               (MOVE_TEXTS4)
  529.             )
  530.           )
  531.         )
  532.       )
  533.     )
  534.     ;;;若点击鼠标左、右键或键盘任意按键,则取得当前鼠标位置,并绘制标高符号
  535.     (IF (OR (= 3 (CAR VPOINTENT)) (= 2 (CAR VPOINTENT)) (= 11 (CAR VPOINTENT)))
  536.       (PROGN
  537.         (SETQ LOOP_ID NIL)
  538.         ;;;绘制标高符号
  539.         (DRAW_LINES)
  540.       )
  541.     )
  542.   );END WHILE
  543.   (PRINC)
  544. )
  545. ;;;文字设置成右下格式
  546. (DEFUN MOVE_TEXTS1 (/ ENAME INSPT MPOINTS N INDEX ENT)
  547.   (SETQ INDEX 0)
  548.   (SETQ N (SSLENGTH SSTXTS))
  549.   (SETQ INSPT (POLAR PT1 HPI (* DIMSC 0.6)))
  550.   (WHILE (< INDEX N)
  551.     (SETQ MPOINTS (POLAR INSPT (* 0.5 PI) (* INDEX DIMSC 4)))
  552.     (SETQ ENAME (SSNAME SSTXTS INDEX))
  553.     (SETQ ENT (ENTGET ENAME))
  554.     (SETQ ENT (SUBST (CONS 11 MPOINTS) (ASSOC 11 ENT) ENT))
  555.     (SETQ ENT (SUBST (CONS 72 2) (ASSOC 72 ENT) ENT))
  556.     (SETQ ENT (SUBST (CONS 73 1) (ASSOC 73 ENT) ENT))
  557.     (ENTMOD ENT)
  558.     (ENTUPD ENAME)
  559.     (SETQ INDEX (1+ INDEX))
  560.   )
  561. )
  562. ;;;文字设置成右上格式
  563. (DEFUN MOVE_TEXTS2 (/ ENAME INSPT MPOINTS N INDEX ENT)
  564.   (SETQ INDEX 0)
  565.   (SETQ N (SSLENGTH SSTXTS))
  566.   (SETQ INSPT (POLAR PT1 TPI (* DIMSC 0.8)))
  567.   (WHILE (< INDEX N)
  568.     (SETQ MPOINTS (POLAR INSPT (* 1.5 PI) (* INDEX DIMSC 4)))
  569.     (SETQ ENAME (SSNAME SSTXTS (- N 1 INDEX)))
  570.     (SETQ ENT (ENTGET ENAME))
  571.     (SETQ ENT (SUBST (CONS 11 MPOINTS) (ASSOC 11 ENT) ENT))
  572.     (SETQ ENT (SUBST (CONS 72 2) (ASSOC 72 ENT) ENT))
  573.     (SETQ ENT (SUBST (CONS 73 3) (ASSOC 73 ENT) ENT))
  574.     (ENTMOD ENT)
  575.     (ENTUPD ENAME)
  576.     (SETQ INDEX (1+ INDEX))
  577.   )
  578. )
  579. ;;;文字设置成左下格式
  580. (DEFUN MOVE_TEXTS3 (/ ENAME INSPT MPOINTS N INDEX ENT)
  581.   (SETQ INDEX 0)
  582.   (SETQ N (SSLENGTH SSTXTS))
  583.   (SETQ INSPT (POLAR PT1 HPI (* DIMSC 0.6)))
  584.   (WHILE (< INDEX N)
  585.     (SETQ MPOINTS (POLAR INSPT (* 0.5 PI) (* INDEX DIMSC 4)))
  586.     (SETQ ENAME (SSNAME SSTXTS INDEX))
  587.     (SETQ ENT (ENTGET ENAME))
  588.     (SETQ ENT (SUBST (CONS 11 MPOINTS) (ASSOC 11 ENT) ENT))
  589.     (SETQ ENT (SUBST (CONS 72 0) (ASSOC 72 ENT) ENT))
  590.     (SETQ ENT (SUBST (CONS 73 1) (ASSOC 73 ENT) ENT))
  591.     (ENTMOD ENT)
  592.     (ENTUPD ENAME)
  593.     (SETQ INDEX (1+ INDEX))
  594.   )
  595. )
  596. ;;;文字设置成左上格式
  597. (DEFUN MOVE_TEXTS4 (/ ENAME INSPT MPOINTS N INDEX ENT)
  598.   (SETQ INDEX 0)
  599.   (SETQ N (SSLENGTH SSTXTS))
  600.   (SETQ INSPT (POLAR PT1 TPI (* DIMSC 0.8)))
  601.   (WHILE (< INDEX N)
  602.     (SETQ MPOINTS (POLAR INSPT (* 1.5 PI) (* INDEX DIMSC 4)))
  603.     (SETQ ENAME (SSNAME SSTXTS (- N 1 INDEX)))
  604.     (SETQ ENT (ENTGET ENAME))
  605.     (SETQ ENT (SUBST (CONS 11 MPOINTS) (ASSOC 11 ENT) ENT))
  606.     (SETQ ENT (SUBST (CONS 72 0) (ASSOC 72 ENT) ENT))
  607.     (SETQ ENT (SUBST (CONS 73 3) (ASSOC 73 ENT) ENT))
  608.     (ENTMOD ENT)
  609.     (ENTUPD ENAME)
  610.     (SETQ INDEX (1+ INDEX))
  611.   )
  612. )
  613. ;;;绘制标高符号
  614. (DEFUN DRAW_LINES ()
  615.   (SETQ SSPLINES NIL)
  616.   (SETQ SSPLINES (SSADD))
  617.   (REDRAW)
  618.   ;;;以下鼠标位置注释同预览注释
  619.   (IF (< BSPTX VPTX)
  620.     (COND
  621.       ((AND (<= VPTX (+ BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  622.          (< BSPTY VPTY)
  623.          (<= VPTY (+ BSPTY (* DIMSC 3.0)))
  624.        )
  625.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT3 PT4 PT2 "")
  626.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  627.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT5 "")
  628.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  629.       )
  630.       ((AND (> VPTX (+ BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  631.          (< BSPTY VPTY)
  632.          (<= VPTY (+ BSPTY (* DIMSC 3.0)))
  633.        )
  634.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT3 PT4 PT2 "")
  635.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  636.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT5 "")
  637.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  638.       )
  639.       ((AND (> VPTX (+ BSPTX BG_LENGTH))
  640.          (< BSPTY VPTY)
  641.          (> VPTY (+ BSPTY (* DIMSC 3.0)))
  642.        )
  643.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT2 PT3"")
  644.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  645.         (COMMAND "_.PLINE" PT3 "W" 0 0  PT4 PT5 "C")
  646.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  647.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT6 "")
  648.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  649.       )
  650.       ((AND (< VPTX (+ BSPTX BG_LENGTH))
  651.          (< BSPTY VPTY)
  652.          (> VPTY (+ BSPTY (* DIMSC 3.0)))
  653.        )
  654.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT2 PT3"")
  655.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  656.         (COMMAND "_.PLINE" PT3 "W" 0 0  PT4 PT5 "C")
  657.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  658.       )
  659.       ;;;BELOW
  660.       ((AND (<= VPTX (+ BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  661.          (> BSPTY VPTY)
  662.          (>= VPTY (- BSPTY (* DIMSC 3.0)))
  663.        )
  664.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT3 PT4 PT2 "")
  665.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  666.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT5 "")
  667.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  668.       )
  669.       ((AND (> VPTX (+ BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  670.          (> BSPTY VPTY)
  671.          (>= VPTY (- BSPTY (* DIMSC 3.0)))
  672.        )
  673.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT3 PT4 PT2 "")
  674.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  675.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT5 "")
  676.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  677.       )
  678.       ((AND (> VPTX (+ BSPTX BG_LENGTH))
  679.          (> BSPTY VPTY)
  680.          (<= VPTY (- BSPTY (* DIMSC 3.0)))
  681.        )
  682.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT2 PT3"")
  683.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  684.         (COMMAND "_.PLINE" PT3 "W" 0 0  PT4 PT5 "C")
  685.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  686.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT6 "")
  687.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  688.       )
  689.       ((AND (< VPTX (+ BSPTX BG_LENGTH))
  690.          (> BSPTY VPTY)
  691.          (<= VPTY (- BSPTY (* DIMSC 3.0)))
  692.        )
  693.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT2 PT3"")
  694.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  695.         (COMMAND "_.PLINE" PT3 "W" 0 0  PT4 PT5 "C")
  696.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  697.       )
  698.     )
  699.     ;;;鼠标在插入点左边
  700.     (COND
  701.       ((AND (>= VPTX (- BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  702.          (< BSPTY VPTY)
  703.          (<= VPTY (+ BSPTY (* DIMSC 3.0)))
  704.        )
  705.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT3 PT4 PT2 "")
  706.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  707.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT5 "")
  708.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  709.       )
  710.       ((AND (< VPTX (- BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  711.          (< BSPTY VPTY)
  712.          (<= VPTY (+ BSPTY (* DIMSC 3.0)))
  713.        )
  714.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT3 PT4 PT2 "")
  715.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  716.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT5 "")
  717.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  718.       )
  719.       ((AND (< VPTX (- BSPTX BG_LENGTH))
  720.          (< BSPTY VPTY)
  721.          (> VPTY (+ BSPTY (* DIMSC 3.0)))
  722.        )
  723.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT2 PT3"")
  724.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  725.         (COMMAND "_.PLINE" PT3 "W" 0 0  PT4 PT5 "C")
  726.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  727.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT6 "")
  728.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  729.       )
  730.       ((AND (>= VPTX (- BSPTX BG_LENGTH))
  731.          (< BSPTY VPTY)
  732.          (> VPTY (+ BSPTY (* DIMSC 3.0)))
  733.        )
  734.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT2 PT3"")
  735.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  736.         (COMMAND "_.PLINE" PT3 "W" 0 0  PT4 PT5 "C")
  737.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  738.       )
  739.       ;;;BELOW
  740.       ((AND (>= VPTX (- BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  741.          (> BSPTY VPTY)
  742.          (>= VPTY (- BSPTY (* DIMSC 3.0)))
  743.        )
  744.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT3 PT4 PT2 "")
  745.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  746.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT5 "")
  747.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  748.       )
  749.       ((AND (< VPTX (- BSPTX (+ BG_LENGTH (* DIMSC 8.0))))
  750.          (> BSPTY VPTY)
  751.          (>= VPTY (- BSPTY (* DIMSC 3.0)))
  752.        )
  753.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT3 PT4 PT2 "")
  754.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  755.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT5 "")
  756.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  757.       )
  758.       ((AND (< VPTX (- BSPTX BG_LENGTH))
  759.          (> BSPTY VPTY)
  760.          (< VPTY (- BSPTY (* DIMSC 3.0)))
  761.        )
  762.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT2 PT3"")
  763.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  764.         (COMMAND "_.PLINE" PT3 "W" 0 0  PT4 PT5 "C")
  765.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  766.         (COMMAND "_.PLINE" BSPOINT "W" 0 0 PT6 "")
  767.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  768.       )
  769.       ((AND (>= VPTX (- BSPTX BG_LENGTH))
  770.          (> BSPTY VPTY)
  771.          (< VPTY (- BSPTY (* DIMSC 3.0)))
  772.        )
  773.         (COMMAND "_.PLINE" PT1 "W" 0 0 PT2 PT3"")
  774.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  775.         (COMMAND "_.PLINE" PT3 "W" 0 0  PT4 PT5 "C")
  776.         (SETQ SSPLINES (SSADD (ENTLAST) SSPLINES))
  777.       )
  778.     )
  779.   )
  780. )
  781. ;;;如果多个标高数据在不同高度标注
  782. (DEFUN IF_COPYBG (/ DEF_BGTXTS I IBASEPT MOVEPT TXTJUST GAP)
  783.   (IF (AND (> (LENGTH BGLST) 1) (OR (= YESNO "N") (= YESNO "n")))
  784.     (PROGN
  785.       (SETQ BGLST (VL-SORT BGLST '<))
  786.       (SUB_COPYBG)
  787.       (SETQ TXTPT (POLAR PT1 HPI GAP))
  788.       (SETQ IBASEPT (LIST (CAR TXTPT) (/ (ATOF DEF_BGTXT) 0.001 (ATOF BGBL)) 0.0));取得0m点
  789.       (SETQ I 0)
  790.       (REPEAT (LENGTH BGLST)
  791.         (SETQ MOVEPT (POLAR TXTPT HPI (/  (- (NTH I BGLST) (ATOF DEF_BGTXT)) 0.001 (ATOF BGBL))))
  792.         (COMMAND "_.COPY" SSPLINES "" TXTPT MOVEPT)
  793.         (SETQ TEXTSTR (RTOS (ATOF (VL-PRINC-TO-STRING (NTH I BGLST))) 2 (ATOI BGDOT)))
  794.         (IF (= 0 (ATOF TEXTSTR)) (SETQ TEXTSTR (STRCAT "%%P" TEXTSTR)))
  795.         (COMMAND "_.TEXT" "J" TXTJUST MOVEPT (* DIMSC 3.0) 0 TEXTSTR)
  796.         (SETQ I (1+ I))
  797.       )
  798.     )
  799.   )
  800. )
  801. ;;;设置多重标注时的文字对齐方式及文字离线垂直距离
  802. (DEFUN SUB_COPYBG ()
  803.   (COND
  804.     ((AND (< BSPTX VPTX) (< BSPTY VPTY))
  805.       (SETQ TXTJUST "BR")
  806.       (SETQ GAP (* DIMSC 0.6))
  807.     )
  808.     ((AND (< VPTX BSPTX) (< BSPTY VPTY))
  809.       (SETQ TXTJUST "BL")
  810.       (SETQ GAP (* DIMSC 0.6))
  811.     )
  812.     ((AND (< BSPTX VPTX) (< VPTY BSPTY))
  813.       (SETQ TXTJUST "TR")
  814.       (SETQ GAP (* DIMSC -0.6))
  815.     )
  816.     ((AND (< VPTX BSPTX) (< VPTY BSPTY))
  817.       (SETQ TXTJUST "TL")
  818.       (SETQ GAP (* DIMSC -0.6))
  819.     )
  820.   )
  821. )
复制代码
cad默认是毫米为单位,但是一般习惯用米为单位,上述如何修改成米为单位的

发表于 2020-6-11 09:03 | 显示全部楼层
程序太长了,没工夫看。你把要显示的数字除以1000不就得到了吗?
回复

使用道具 举报

 楼主| 发表于 2020-6-16 23:00 | 显示全部楼层
原地踏步 发表于 2020-6-11 09:03
程序太长了,没工夫看。你把要显示的数字除以1000不就得到了吗?

好吧,还是谢谢
回复

使用道具 举报

 楼主| 发表于 2020-7-15 21:57 | 显示全部楼层
已经解决了
回复

使用道具 举报

发表于 2022-8-30 15:00 | 显示全部楼层
解决了还不结题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 16:27 , Processed in 0.438229 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表