乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 162|回复: 0

[编程交流] 帮助使用维度 lisp 代码

[复制链接]

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-9-23 22:14:16 | 显示全部楼层 |阅读模式
我正在尝试对旧的维度 lisp 代码进行一些更改。Tis 代码选择一条折线并在折线的顶点之间插入尺寸文本(打开/关闭)
我想为图层和字体样式添加选项菜单。问题是,当我选择选项 1 时,使用选项 1 的字体样式,但在选项 2 图层中插入文本。我不知道为什么。谁能帮我?
  1. (Defun C:TEST1 (/ txtstl txtsze stryn prfx sufx svr scl ht pt pti ptx pty
  2.                    old oldpl nodpl ptyp pllst i n prin meta distmeta ptdist
  3.                    angprin angmeta angtxt ptp alfa nlin xlin ylin dlin flg
  4.                    xreg yreg na xa ya)
  5. ;*************drawing set-up***************************
  6.    (command "undo" "m")
  7.    (setvar "unitmode" 0)
  8.    (setvar "aunits" 2)
  9.    (setvar "angbase" (/ pi 2))
  10.    (setvar "angdir" 1)
  11.    (setvar "auprec" 4)
  12.    (setvar "lunits" 2)
  13.    (setvar "luprec" 3)
  14.    (setvar "dimzin" 0)
  15. (setq svr(getvar "osmode"))
  16. (setq txtstl(getvar "textstyle"))
  17. (setq txtsze(getvar "textsize"))
  18. (setvar "cmdecho" 0)
  19. (setq flg 1)
  20. (setvar "cmdecho" 0)
  21. (setq scl (getvar "useri1")) ; dont change this
  22. (setq ht(* 0.00175 scl))     ; dont change this
  23. ;------------------------------------------------------------
  24.   (TEXTPAGE)
  25. (princ "\n")(princ "\n")(princ "\n")
  26. (progn
  27.            (initget "1 2")
  28.            (setq
  29.              l
  30.               (cond
  31.                 ((getkword
  32.                    "\n select:
  33.                        1. option1.
  34.                        2. option2.
  35. "
  36.                  )
  37.                 )
  38.                 ("1")
  39.               )
  40.            )
  41. (if (eq l "1")
  42.       (command "-style" "diast" "wgsimpl.shx" "0" "1.2" "0" "N" "N" "N")
  43.       (command "_layer" "_m" "dim" "_c" "93" "" "_lw" "0.30" "" "")
  44.           )
  45.        (if (eq l "2")
  46.       (command "-style" "ktdiast" "wgsimpl.shx" "0" "1" "0" "N" "N" "N")
  47.       (command "_layer" "_m" "KT-DIM" "_c" "191" "" "_lw" "0.30" "" "")
  48.            )
  49.       
  50. )
  51. ;--------------------------------------------------------------------------------------------
  52. :********BOUNDARY LINE**********
  53. (setvar "osmode" 0)
  54. (setq old(entsel "\n select lwpolyline: "))
  55. (setq oldpl(entget(car old)))
  56. (setq nodpl(cdr(assoc 90 oldpl)))
  57. (setq ptyp (cdr(assoc 70 oldpl)))
  58. (command "area" "e" old)
  59. (setq pllst '())
  60. (setq i 0)
  61. (setq n 0)
  62. (while (car(nth i oldpl))
  63.         (if (= (car(nth i oldpl)) 10)
  64.                (progn
  65.                      (setq pllst (append pllst (list (cdr(nth i oldpl)))))
  66.                      (setq n(+ 1 n))
  67.                );endprogn
  68.         );endif
  69.          (setq i (+ i 1))
  70. );endwhile
  71. (if (= ptyp 1)
  72.    (progn
  73.          (setq pllst (append pllst (list(nth 0 pllst))))
  74.          (setq pllst (cdr pllst))
  75.    );endprogn     
  76. );endif
  77. ; (main)
  78. ;);close defun
  79. ;(defun main()
  80. ;*******
  81. (setq alfa 193)
  82. (foreach n pllst (command n))
  83. (command "")
  84. (command "erase" pt "")
  85. (setq i 0 prin 0 meta 0)
  86. (while (car(nth i pllst))
  87.   (setq prin (- i 1))
  88.   (setq meta (+ i 1))
  89.     (if (= i 0)
  90.                (setq prin (- n 1))
  91.     )
  92.     (if (= i (- n 1))
  93.                (setq meta 0)
  94.     )
  95.   (setq angprin (angle (nth i pllst) (nth prin pllst)))
  96.   (setq angmeta (angle (nth i pllst) (nth meta pllst)))
  97.   (setq distmeta (distance (nth i pllst) (nth meta pllst)))
  98. ;-------------------------------------------------------------------------------
  99.   (setq ptdist (polar
  100.                      (polar (nth i pllst) angmeta (/ distmeta 2))
  101.                      (+ angmeta (* (/ pi 2) flg)) (* 0.5 ht)))
  102.   (setq angtxt(- 500 (/ (* 400 angmeta) (* 2 pi))))
  103.   (if (> angtxt 400)
  104.               (setq angtxt (- angtxt 400))
  105.   )
  106.   (if (> angtxt 200)
  107.         (progn
  108.               (setq ptdist (polar
  109.                                  (polar (nth i pllst) angmeta (/ distmeta 2))
  110.                                  (+ angmeta (* (/ pi 2) flg)) (* 1.50 ht)))
  111.               (setq angtxt (- angtxt 200))
  112.         );endprogn
  113.   )
  114.   (command "text" "j" "c"
  115.                          ptdist ht
  116.                          angtxt
  117.                          (rtos distmeta 2 2)
  118.   )
  119.     (setq i (+ i 1))
  120. );endwhile
  121. (if (= ptyp 0)
  122.                (command "erase" "l" "")
  123. )
  124. (setvar "osmode" svr)
  125. (setvar "cmdecho" 1)
  126. (setvar "textstyle" txtstl)
  127. (setvar "textsize"  txtsze)
  128. ; layer 0
  129. (mapcar 'setvar '("clayer" "cecolor" "celtype" "celweight") (list "0" "BYLAYER" "BYLAYER" -1))
  130. (princ)
  131. );close defun


回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 01:05 , Processed in 0.191231 second(s), 54 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表