乐筑天下

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

[编程交流] 曲线引线调整

[复制链接]

57

主题

351

帖子

294

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2022-7-6 15:18:58 | 显示全部楼层 |阅读模式
我有一个Lisp程序的领导人我使用。不知怎的,我的尺码变了。在1=1ps中,引线上的箭头应为1/8“长,1/16”宽,在我的代码中,我在哪里更改它?它还需要根据不同的规模进行相应的扩展。对于四分之一刻度,其长度应为6英寸,宽度应为2英寸。如果它不是太多,那么如果它在命令开始时关闭osnaps,然后在命令结束时重新打开它也会很好,如果这太大,那么大小才是真正重要的。任何帮助都会很棒!
  1. ;Curved Leader
  2. (defun c:CL ()
  3.   (defun *error* (msg)
  4.      (reset)
  5.      (prompt (strcat "\n\n" msg "  "))
  6.   );defun
  7.   (setq osm (getvar "osmode"))
  8.   (setq layerl (getvar "clayer"))
  9.   (setq ortho (getvar "orthomode"))
  10.   (setvar "orthomode"0)
  11.   (setvar "blipmode"0)
  12.   (setvar "cmdecho"0)
  13.   (if (tblsearch "layer" "txt")
  14.           (command "layer" "s" "txt" "")
  15.           (progn
  16.               (setq rgn (getvar "regenmode")) (setvar "regenmode"0)
  17.               (command "layer" "m" "txt")
  18.               (command "c" "c" "")
  19.               (command "")
  20.               (setvar "regenmode" rgn)
  21.           );progn
  22.       );if
  23.    (princ)
  24.   (setq p1 (getpoint "\nstart: "))
  25.   (setq p2 (getpoint p1 "\nfirst point of curve: "))
  26.      (setq ang (angle p1 p2))
  27.      (setq dimsc (getvar "dimscale"))
  28.      (setq lth (* 0.10125 dimsc))
  29.      (setq pp2 (polar p1 ang lth))
  30.      (setq p02 (polar pp2 (+ ang 1.570796) (/ lth 5.5)))
  31.      (setq p03 (polar pp2 (- ang 1.570796) (/ lth 5.5)))
  32.      (command "pline" p1 "w" "0" "0" p2)
  33.      (while (setq p2 (getpoint "\nto point: " p2))
  34.        (command p2)
  35.      );while
  36.      (command "")
  37.   (princ)
  38.   (command "pedit" "@" "s"  "")
  39.   (command "solid" p1 p02 p03 "" "")
  40.   (if (tblsearch "layer" "txt")
  41.           (command "layer" "s" "txt" "")
  42.           (progn
  43.               (setq rgn (getvar "regenmode")) (setvar "regenmode"0)
  44.               (command "layer" "m" "text")
  45.               (command "c" "4" "")
  46.               (command "")
  47.               (setvar "regenmode" rgn)
  48.           );progn
  49.       );if
  50.    (princ)
  51.    (setvar "osmode"1)
  52.    (setvar "blipmode"0)
  53.    (setq t1 (getpoint "\nPick end point of leader: "))
  54.    (setvar "osmode" osm)
  55.    (setq t2 (getpoint t1 "\nPick direction for text justification: "))
  56.    (setq ds (/ dimsc 24))
  57.    (if (< (car t2) (car t1))
  58.        (setq t3 (polar t1 (/ 225 57.295) (* ds (sqrt 2.0))))
  59.        (setq t3 (polar t1 (/ 315 57.295) (* ds (sqrt 2.0))))
  60.    );if
  61.   (prompt "\nEnter Text: ")
  62.    (if (< (car t3) (car t1))
  63.        (command "Dtext" "r" t3 "0")
  64.        (command "Dtext" t3 "0")
  65.    );if
  66.   (setvar "orthomode" ortho)
  67.   (command "layer" "s" layerl "")   
  68.   )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:29:59 | 显示全部楼层
我刚才不是为你们创建了一个可以改变这些变量的模型吗
 
  1. ;|
  2.    Curved Leader
  3.    By Lee McDonnell
  4.    31.12.2008
  5. |;
  6. ; Version 2  ~  Added Variable Menu.
  7. (defun c:cl () (c:CurvedLeader)) ; Program Shortcut
  8. (defun c:CurvedLeader (/ *error* varlist oldvars pl vlist stpt enpt ang pt ltxt)
  9.    ;;     --- Error Trap ---
  10.    (defun *error* (msg)
  11.    (mapcar 'setvar varlist oldvars)
  12.    (if (= msg "")
  13.        (princ "\nLeader Constructed.")
  14.        (princ (strcat "\n" (strcase msg)))
  15.    ) ;_  end if
  16.    (princ)
  17.    ) ; end of *error*
  18.    (setq varlist (list "CMDECHO" "CLAYER" "PLINEWID")
  19.      oldvars (mapcar 'getvar varlist)
  20.    ) ; end setq
  21.    ;;     --- Error Trap ---
  22.    (or (getenv "CL:ARROWW") (setenv "CL:ARROWW" "2.0"))
  23.    (or (getenv "CL:ARROWL") (setenv "CL:ARROWL" "4.0"))
  24.    (or (getenv "CL:TEXTH") (setenv "CL:TEXTH" "2.5"))
  25.    (or (getenv "CL:TEXTO") (setenv "CL:TEXTO" "2.5"))
  26.    (alert
  27.    (strcat    "Type "CLSET" to Alter Base Variables.
  28.            \nCurrent Settings: \n\nArrow Width: "
  29.        (getenv "CL:ARROWW")
  30.        "\nArrow Length: "
  31.        (getenv "CL:ARROWL")
  32.        "\nText Height: "
  33.        (getenv "CL:TEXTH")
  34.        "\nText Offset: "
  35.        (getenv "CL:TEXTO")
  36.    ) ;_  end strcat
  37.    ) ;_  end alert
  38.    (defun makelay (x y)
  39.    (if (not (tblsearch "Layer" x))
  40.        (command "-layer" "m" x "c" y x "")
  41.    ) ;_  end if
  42.    ) ;_  end defun
  43.    (defun polyvert (z)
  44.    (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget z)))
  45.    ) ;_  end defun
  46.    (setvar "cmdecho" 0)
  47.    (vl-load-com)
  48.    (mapcar 'makelay '("LEADER" "LEADER-TEXT") '("2" "2"))
  49.    (setvar "clayer" "LEADER")
  50.    (prompt "\nConstruct Leader... ")
  51.    (setvar "PLINEWID" 0.0)
  52.    (command "_pline")
  53.    (while (> (getvar "cmdactive") 0) (command pause))
  54.    (setq pl (entlast))
  55.    (setq vlist (polyvert pl))
  56.    (command "_pedit" pl "S" "")
  57.    (setq stpt (car vlist)
  58.      enpt (last vlist)
  59.      ang  (angle stpt (cadr vlist))
  60.    ) ;_  end setq
  61.    (command "_pline"
  62.         stpt
  63.         "W"
  64.         "0.0"
  65.         "2.0"
  66.         (polar stpt ang 4.0)
  67.         ""
  68.    ) ;_  end command
  69.    (setq pt (polar enpt 0 2.5))
  70.    (if    (/= (setq ltxt (getstring t "\nSpecify Text for Leader: ")) "")
  71.    (entmake
  72.        (list '(0 . "TEXT")
  73.          '(8 . "LEADER-TEXT")
  74.          (cons 10 pt)
  75.          (cons 40 2.5)
  76.          (cons 1 ltxt)
  77.          '(50 . 0.0)
  78.          '(7 . "STANDARD")
  79.          '(71 . 0)
  80.          '(72 . 0)
  81.          '(73 . 2)
  82.          (cons 11 pt)
  83.        ) ; end list
  84.    ) ; end entmake
  85.    (alert "Blank Leader Created.")
  86.    ) ;_  end if
  87.    (*error* "")
  88.    (princ)
  89. ) ;_  end defun
  90. (princ "\nCurved Leader by Lee McDonnell Loaded. Type "CL" to Invoke.")
  91. (defun c:clset (/ arw arl txth txto)
  92.    (or (getenv "CL:ARROWW") (setenv "CL:ARROWW" "2.0"))
  93.    (or (getenv "CL:ARROWL") (setenv "CL:ARROWL" "4.0"))
  94.    (or (getenv "CL:TEXTH") (setenv "CL:TEXTH" "2.5"))
  95.    (or (getenv "CL:TEXTO") (setenv "CL:TEXTO" "2.5"))
  96.    (alert (strcat "Current Settings: \n\nArrow Width: "
  97.           (getenv "CL:ARROWW")
  98.           "\nArrow Length: "
  99.           (getenv "CL:ARROWL")
  100.           "\nText Height: "
  101.           (getenv "CL:TEXTH")
  102.           "\nText Offset: "
  103.           (getenv "CL:TEXTO")
  104.       ) ;_  end strcat
  105.    ) ;_  end alert
  106.    (if    (setq arw (getreal (strcat "Specify Arrow Width <"
  107.                   (getenv "CL:ARROWW")
  108.                   "> : "
  109.               ) ;_  end strcat
  110.          ) ;_  end getreal
  111.    ) ;_  end setq
  112.    (setenv "CL:ARROWW" (rtos arw))
  113.    ) ;_  end if
  114.    (if    (setq arl (getreal (strcat "Specify Arrow Length <"
  115.                   (getenv "CL:ARROWL")
  116.                   "> : "
  117.               ) ;_  end strcat
  118.          ) ;_  end getreal
  119.    ) ;_  end setq
  120.    (setenv "CL:ARROWL" (rtos arl))
  121.    ) ;_  end if
  122.    (if    (setq txth (getreal (strcat "Specify Text Height <"
  123.                    (getenv "CL:TEXTH")
  124.                    "> : "
  125.                ) ;_  end strcat
  126.           ) ;_  end getreal
  127.    ) ;_  end setq
  128.    (setenv "CL:TEXTH" (rtos txth))
  129.    ) ;_  end if
  130.    (if    (setq txto (getreal (strcat "Specify Text Offset <"
  131.                    (getenv "CL:TEXTO")
  132.                    "> : "
  133.                ) ;_  end strcat
  134.           ) ;_  end getreal
  135.    ) ;_  end setq
  136.    (setenv "CL:TEXTO" (rtos txto))
  137.    ) ;_  end if
  138.    (princ "\nBase Variables Set.")
  139.    (princ)
  140. ) ;_  end defun
回复

使用道具 举报

57

主题

351

帖子

294

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2022-7-6 15:36:18 | 显示全部楼层
我很确定你做了,我一直在经历和摆脱旧的口吃,我们有4个弯曲的领导人口吃,我摆脱了正确的一个,并保留了错误的一个。谢谢你再次修复它。
回复

使用道具 举报

57

主题

351

帖子

294

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2022-7-6 15:42:12 | 显示全部楼层
它说键入clset来更改变量,当我这样做时,它说输入无效。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:49:04 | 显示全部楼层
在LISP函数之外键入CLSet-我知道它不太好,但这是一个快速修复方法。
回复

使用道具 举报

57

主题

351

帖子

294

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2022-7-6 15:57:59 | 显示全部楼层
有没有办法让它随着比例的变化而变化。
 
对于四分之一刻度,我使用
  1. (defun c:1=48MS ()
  2. (setvar "tilemode" 1)
  3. (command "-style" "" "" 4.5 ".9" "" "" "" "")
  4. (setvar "ltscale" 18)
  5. (setvar "DIMscale" 48)
  6. (setvar "BLIPMODE" 0)
  7. )
  8. CODE] and the arrows should be 2" wide and 6" long
  9. for eighth scale
  10. [code(defun c:1=96MS ()
  11. (setvar "tilemode" 1)
  12. (command "-style" "" "" 9 ".9" "" "" "" "")
  13. (setvar "ltscale" 36)
  14. (setvar "DIMscale" 96)
  15. (setvar "BLIPMODE" 0)
  16. )
,箭头应为4“x 10”
有没有办法让箭头根据这些值改变大小?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:02:50 | 显示全部楼层
我可以将箭头大小乘以dimscale集(或dimscale的修改)。
 
你说,当它为1/4时,你将dimscale设置为48?
回复

使用道具 举报

57

主题

351

帖子

294

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2022-7-6 16:09:31 | 显示全部楼层
是的,我想我需要的是把尺寸乘以dimscale
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:17:15 | 显示全部楼层
我想文字高度也需要乘以因子?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:21:22 | 显示全部楼层
好的,对不起,原来的代码-我没有正确完成菜单-当你设置值时,它们可能对实际的领导者没有影响。
 
现在已修复:
 
  1. ;|
  2.    Curved Leader
  3.    By Lee McDonnell
  4.    31.12.2008
  5. |;
  6. ; Version 2  ~  Added Variable Menu.
  7. (defun c:cl () (c:CurvedLeader)) ; Program Shortcut
  8. (defun c:CurvedLeader (/ *error* varlist oldvars dmscal pl vlist stpt enpt ang pt ltxt)
  9.    ;;     --- Error Trap ---
  10.    (defun *error* (msg)
  11.    (mapcar 'setvar varlist oldvars)
  12.    (if (= msg "")
  13.        (princ "\nLeader Constructed.")
  14.        (princ (strcat "\n" (strcase msg)))
  15.    ) ;_  end if
  16.    (princ)
  17.    ) ; end of *error*
  18.    (setq varlist (list "CMDECHO" "CLAYER" "PLINEWID")
  19.      oldvars (mapcar 'getvar varlist)
  20.    ) ; end setq
  21.    ;;     --- Error Trap ---
  22.    (or (getenv "CL:ARROWW") (setenv "CL:ARROWW" "2.0"))
  23.    (or (getenv "CL:ARROWL") (setenv "CL:ARROWL" "4.0"))
  24.    (or (getenv "CL:TEXTH") (setenv "CL:TEXTH" "2.5"))
  25.    (or (getenv "CL:TEXTO") (setenv "CL:TEXTO" "2.5"))
  26.    (alert
  27.    (strcat    "Type "CLSET" to Alter Base Variables.
  28.            \nCurrent Settings: \n\nArrow Width: "
  29.        (getenv "CL:ARROWW")
  30.        "\nArrow Length: "
  31.        (getenv "CL:ARROWL")
  32.        "\nText Height: "
  33.        (getenv "CL:TEXTH")
  34.        "\nText Offset: "
  35.        (getenv "CL:TEXTO")
  36.    ) ;_  end strcat
  37.    ) ;_  end alert
  38.    (defun makelay (x y)
  39.    (if (not (tblsearch "Layer" x))
  40.        (command "-layer" "m" x "c" y x "")
  41.    ) ;_  end if
  42.    ) ;_  end defun
  43.    (defun polyvert (z)
  44.    (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget z)))
  45.    ) ;_  end defun
  46.    (setvar "cmdecho" 0)
  47.    (vl-load-com)
  48.    (setq dmscal (max 1 (getvar "DIMSCALE")))
  49.    (mapcar 'makelay '("LEADER" "LEADER-TEXT") '("2" "2"))
  50.    (setvar "clayer" "LEADER")
  51.    (prompt "\nConstruct Leader... ")
  52.    (setvar "PLINEWID" 0.0)
  53.    (command "_pline")
  54.    (while (> (getvar "cmdactive") 0) (command pause))
  55.    (setq pl (entlast))
  56.    (setq vlist (polyvert pl))
  57.    (command "_pedit" pl "S" "")
  58.    (setq stpt (car vlist)
  59.      enpt (last vlist)
  60.      ang  (angle stpt (cadr vlist))
  61.    ) ;_  end setq
  62.    (command "_pline"
  63.         stpt
  64.         "W"
  65.         "0.0"
  66.         (rtos (* (atof (getenv "CL:ARROWW")) dmscal))
  67.         (polar stpt ang (* (atof (getenv "CL:ARROWL")) dmscal))
  68.         ""
  69.    ) ;_  end command
  70.    (setq pt (polar enpt 0 (atof (getenv "CL:TEXTO"))))
  71.    (if    (/= (setq ltxt (getstring t "\nSpecify Text for Leader: ")) "")
  72.    (entmake
  73.        (list '(0 . "TEXT")
  74.          '(8 . "LEADER-TEXT")
  75.          (cons 10 pt)
  76.          (cons 40 (* (atof (getenv "CL:TEXTH")) dmscal))
  77.          (cons 1 ltxt)
  78.          '(50 . 0.0)
  79.          '(7 . "STANDARD")
  80.          '(71 . 0)
  81.          '(72 . 0)
  82.          '(73 . 2)
  83.          (cons 11 pt)
  84.        ) ; end list
  85.    ) ; end entmake
  86.    (alert "Blank Leader Created.")
  87.    ) ;_  end if
  88.    (*error* "")
  89.    (princ)
  90. ) ;_  end defun
  91. (princ "\nCurved Leader by Lee McDonnell Loaded. Type "CL" to Invoke.")
  92. (defun c:clset (/ arw arl txth txto)
  93.    (or (getenv "CL:ARROWW") (setenv "CL:ARROWW" "2.0"))
  94.    (or (getenv "CL:ARROWL") (setenv "CL:ARROWL" "4.0"))
  95.    (or (getenv "CL:TEXTH") (setenv "CL:TEXTH" "2.5"))
  96.    (or (getenv "CL:TEXTO") (setenv "CL:TEXTO" "2.5"))
  97.    (alert (strcat "Current Settings: \n\nArrow Width: "
  98.           (getenv "CL:ARROWW")
  99.           "\nArrow Length: "
  100.           (getenv "CL:ARROWL")
  101.           "\nText Height: "
  102.           (getenv "CL:TEXTH")
  103.           "\nText Offset: "
  104.           (getenv "CL:TEXTO")
  105.       ) ;_  end strcat
  106.    ) ;_  end alert
  107.    (if    (setq arw (getreal (strcat "Specify Arrow Width <"
  108.                   (getenv "CL:ARROWW")
  109.                   "> : "
  110.               ) ;_  end strcat
  111.          ) ;_  end getreal
  112.    ) ;_  end setq
  113.    (setenv "CL:ARROWW" (rtos arw))
  114.    ) ;_  end if
  115.    (if    (setq arl (getreal (strcat "Specify Arrow Length <"
  116.                   (getenv "CL:ARROWL")
  117.                   "> : "
  118.               ) ;_  end strcat
  119.          ) ;_  end getreal
  120.    ) ;_  end setq
  121.    (setenv "CL:ARROWL" (rtos arl))
  122.    ) ;_  end if
  123.    (if    (setq txth (getreal (strcat "Specify Text Height <"
  124.                    (getenv "CL:TEXTH")
  125.                    "> : "
  126.                ) ;_  end strcat
  127.           ) ;_  end getreal
  128.    ) ;_  end setq
  129.    (setenv "CL:TEXTH" (rtos txth))
  130.    ) ;_  end if
  131.    (if    (setq txto (getreal (strcat "Specify Text Offset <"
  132.                    (getenv "CL:TEXTO")
  133.                    "> : "
  134.                ) ;_  end strcat
  135.           ) ;_  end getreal
  136.    ) ;_  end setq
  137.    (setenv "CL:TEXTO" (rtos txto))
  138.    ) ;_  end if
  139.    (princ "\nBase Variables Set.")
  140.    (princ)
  141. ) ;_  end defun
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 21:21 , Processed in 0.494006 second(s), 72 queries .

© 2020-2025 乐筑天下

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