乐筑天下

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

[编程交流] 需要帮助修改标签Lwpo

[复制链接]

23

主题

132

帖子

112

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-6 14:56:51 | 显示全部楼层 |阅读模式
你好
 
我有一些我试图修改的代码。该代码将用全局宽度标记LWpolyline。
 
  1. (vl-load-com)
  2. (defun c:Label_Width ( / js htx AcDoc Space nw_style obj dxf_ent ename t_mod key pr t_char js_text pt deriv rtx nw_obj n)
  3. (princ "\nSelect a polyline.")
  4. (while
  5. (null
  6. (setq js
  7. (ssget "_+.:E:S"
  8. (list
  9. '(0 . "*POLYLINE")
  10. (cons 67 (if (eq (getvar "CVPORT") 1) 1 0))
  11. (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model"))
  12. )
  13. )
  14. )
  15. )
  16. (princ "\nIsn't an available object for this fonction!")
  17. )
  18. (setq
  19.    obj (ssname js 0)
  20.    dxf_ent (entget obj)
  21.    ename (vlax-ename->vla-object obj)
  22.    t_mod '+
  23.    key "Yes"
  24. )
  25. (cond
  26.    ((assoc 43 dxf_ent)
  27.      (initget 6)
  28.      (setq htx (getdist (getvar "VIEWCTR") (strcat "\nSpecify text height <" (rtos (getvar "TEXTSIZE")) ">: ")))
  29.      (if htx (setvar "TEXTSIZE" htx))
  30.      (setq
  31.        AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
  32.        Space
  33.        (if (= 1 (getvar "CVPORT"))
  34.          (vla-get-PaperSpace AcDoc)
  35.          (vla-get-ModelSpace AcDoc)
  36.        )
  37.      )
  38.      (cond
  39.        ((null (tblsearch "LAYER" "Label"))
  40.          (vlax-put (vla-add (vla-get-layers AcDoc) "Label") 'color 96)
  41.        )
  42.      )
  43.      (cond
  44.        ((null (tblsearch "STYLE" "Romand-Label"))
  45.          (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand-Label"))
  46.          (mapcar
  47.            '(lambda (pr val)
  48.              (vlax-put nw_style pr val)
  49.            )
  50.            (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag)
  51.            (list "romand.shx" 0.0 (/ (* 15.0 pi) 180) 1.0 0.0)
  52.          )
  53.        )
  54.      )
  55.      (repeat 2
  56.        (setq pr -0.5 t_char 64 js_text (ssadd))
  57.        (if (eq key "Yes")
  58.          (repeat (fix (vlax-curve-getEndParam ename))
  59.            (setq
  60.              pt (vlax-curve-GetpointAtParam ename (setq pr (1+ pr)))
  61.              deriv (vlax-curve-getFirstDeriv ename pr)
  62.              rtx (- (atan (cadr deriv) (car deriv)) (angle '(0 0 0) (getvar "UCSXDIR")))
  63.            )
  64.            (setq nw_obj
  65.              (vla-addMtext Space
  66.                (vlax-3d-point (setq pt (polar pt ((eval t_mod) rtx (* pi 0.5)) (getvar "TEXTSIZE"))))
  67.                0.0
  68.                (strcat
  69.                  "%<\\AcObjProp.16.2 Object(%<\\_ObjId "
  70.                  (itoa (vla-get-ObjectID (vlax-ename->vla-object obj)))
  71.                  ">%).ConstantWidth \\f "%lu2">%"
  72.                )
  73.              )
  74.            )
  75.            (if (or (> rtx (* pi 0.5)) (< rtx (- (* pi 0.5)))) (setq rtx (+ rtx pi)))
  76.            (mapcar
  77.              '(lambda (pr val)
  78.                (vlax-put nw_obj pr val)
  79.              )
  80.              (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation)
  81.              (list 5 (getvar "TEXTSIZE") 5 pt "Romand-Label" "Label" rtx)
  82.            )
  83.            (ssadd (entlast) js_text)
  84.          )
  85.        )
  86.        (if (not (eq t_mod '-))
  87.          (progn
  88.            (initget "Yes No")
  89.            (if (eq (setq key (getkword "\nPut labels on other side [Yes/No]? <No>: ")) "Yes")
  90.              (progn (setq n -1 t_mod '-) (repeat (sslength js_text) (entdel (ssname js_text (setq n (1+ n))))))
  91.              (setq t_mod '-)
  92.            )
  93.          )
  94.        )
  95.      )
  96.    )
  97.    (T (princ "\nThis polyine does not have a constant width!"))
  98. )
  99. (prin1)
  100. )

 
1.我需要更改代码,使其只使用当前的文本样式,甚至询问用户应该使用哪种文本样式。它不应该要求高度,也不应该创造一种风格。
 
2.我还想把这个文本放在与lwpolyline相同的层上。
 
3.代码使用文本字段作为文本。我需要修改这个文本字段,使其采用全局宽度并将其乘以1000,并在新值之前放置前缀。即,全局宽度为0.5的pline将具有DN 500的文本标签。
 
我花了一些时间试图实现上述目标,但没有成功。我原以为第3条最容易修改,只需编辑文本字段的代码,但不幸的是,不是这样,否则我做错了什么。
 
任何帮助都将不胜感激。例如,我需要在哪里修改代码,如何修改它以及为什么需要修改它,以便我可以从中学习其他代码。
 
我相信这段代码对其他人也可能有用。
 
不幸的是,我只是没有时间在mo上花时间,因为我在mo的工作中遇到了困难。
 
谢谢
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 15:53:45 | 显示全部楼层
打破而不是建立。。。
 
  1. (vl-load-com)
  2. (defun c:Label_Width ( / js htx AcDoc cLay Space nw_style obj dxf_ent ename t_mod key pr t_char js_text pt deriv rtx nw_obj n)
  3. (princ "\nSelect a polyline.")
  4. (while
  5. (null
  6. (setq js
  7. (ssget "_+.:E:S"
  8. (list
  9. '(0 . "*POLYLINE")
  10. (cons 67 (if (eq (getvar "CVPORT") 1) 1 0))
  11. (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model"))
  12. )
  13. )
  14. )
  15. )
  16. (princ "\nIsn't an available object for this fonction!")
  17. )
  18. (setq
  19.    obj (ssname js 0)
  20.    dxf_ent (entget obj)
  21.    ename (vlax-ename->vla-object obj)
  22.    cLay(vla-get-Layer ename)
  23.    t_mod '+
  24.    key "Yes"
  25. )
  26. (cond
  27.    ((assoc 43 dxf_ent)
  28.      (setq
  29.        AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
  30.        Space
  31.        (if (= 1 (getvar "CVPORT"))
  32.          (vla-get-PaperSpace AcDoc)
  33.          (vla-get-ModelSpace AcDoc)
  34.        )
  35.      )
  36.      (repeat 2
  37.        (setq pr -0.5 t_char 64 js_text (ssadd))
  38.        (if (eq key "Yes")
  39.          (repeat(fix (vlax-curve-getEndParam ename))
  40.            (setq
  41.              pt (vlax-curve-GetpointAtParam ename (setq pr (1+ pr)))
  42.              deriv (vlax-curve-getFirstDeriv ename pr)
  43.              rtx (- (atan (cadr deriv) (car deriv)) (angle '(0 0 0) (getvar "UCSXDIR")))
  44.            )
  45.            (setq nw_obj
  46.              (vla-addMtext Space
  47.                (vlax-3d-point (setq pt (polar pt ((eval t_mod) rtx (* pi 0.5)) (getvar "TEXTSIZE"))))
  48.                0.0
  49.                (strcat "DN"
  50.                  "%<\\AcExpr (%<\\AcObjProp.16.2 Object(%<\\_ObjId "
  51.                  (itoa (vla-get-ObjectID (vlax-ename->vla-object obj)))
  52.                  ">%).ConstantWidth >% * 1000) \\f "%lu2%pr0">%"
  53.                )
  54.              )
  55.            )
  56.            (if (or (> rtx (* pi 0.5)) (< rtx (- (* pi 0.5)))) (setq rtx (+ rtx pi)))
  57.            (mapcar
  58.              '(lambda (pr val)
  59.                (vlax-put nw_obj pr val)
  60.              )
  61.              (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation)
  62.              (list 5 (getvar "TEXTSIZE") 5 pt (getvar "TEXTSTYLE") cLay rtx)
  63.            )
  64.            (ssadd (entlast) js_text)
  65.          )
  66.        )
  67.        (if (not (eq t_mod '-))
  68.          (progn
  69.            (initget "Yes No")
  70.            (if (eq (setq key (getkword "\nPut labels on other side [Yes/No]? <No>: ")) "Yes")
  71.              (progn (setq n -1 t_mod '-) (repeat (sslength js_text) (entdel (ssname js_text (setq n (1+ n))))))
  72.              (setq t_mod '-)
  73.            )
  74.          )
  75.        )
  76.      )
  77.    )
  78.    (T (princ "\nThis polyine does not have a constant width!"))
  79. )
  80. (prin1)
  81. )
回复

使用道具 举报

23

主题

132

帖子

112

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-6 15:59:32 | 显示全部楼层
再次对延迟回复表示抱歉。请不要以为我不感激你的帮助和帮助。我是,非常。这对我来说很好。再次感谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:57 , Processed in 0.353426 second(s), 58 queries .

© 2020-2025 乐筑天下

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