明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5997|回复: 46

[源码] ***** 快速好用 自定 線型文字編輯器 *****

  [复制链接]
发表于 2020-12-12 13:35:33 | 显示全部楼层 |阅读模式
本帖最后由 lee50310 于 2020-12-13 09:59 编辑

<<<  快速好用   自定 線型文字編輯器  >>>
可快速自定出你自己想要的 線型文字  並指定在那個圖層 也可編輯修改 線型文字
使用指令 :makelt






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 4明经币 +4 收起 理由
dtucad + 1 赞一个!
zuicai + 1 很给力!
USER2128 + 1 赞一个!
songyujie928 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2021-8-20 15:02:32 | 显示全部楼层
  1. ;;http://bbs.mjtd.com/thread-183496-1-1.html
  2. (defun c:tt (/ cmde lst p1 ss ss1)
  3.         (setq cmde (getvar "CMDECHO"))
  4.         (setvar "CMDECHO" 0)
  5.         (prompt "\n框选需要合并的表格:")
  6.         (while (setq ss (ssget))
  7.                 (setq lst (reverse (wyb-get-box ss)))
  8.                 (setq p1 (caar lst) lst (cdr lst))
  9.                 (if (/= lst nil)
  10.                         (foreach x lst
  11.                                 (setq ss1 (ssget "w" (car x) (cadr x)))
  12.                                 (vl-cmdf "_.move" ss1 "" "non" (list (caar x) (cadadr x)) "non" p1)
  13.                                 (setq p1 (polar p1 (* 1.5 pi) (distance (car x) (list (caar x) (cadadr x)))))
  14.                         )
  15.                         (prompt "\n没有需要合并的表格。")
  16.                 )
  17.                 (prompt "\n框选需要合并的表格:")
  18.         )
  19.         (setvar "CMDECHO" cmde)
  20.         (prompt "\n表格合并完成!")
  21.         (princ)
  22. )

  23. ;|= 4.2. 取得图元外矩形框
  24. ;@== (wyb-get-box ename)
  25. ;#== return: [plst]'((x1 y1 z1)_min (x2 y2 z2)_max)
  26. ;ver:
  27. ;    [1.0] 明经 Longxin, Gu_xl&邹锋
  28. ;    [1.1] by woyb 20151010
  29. ;    [1.1.1] ADD: 释放obj by woyb 20180730
  30. ;====================|;
  31. (defun wyb-get-box (@e / p1 p2 p3 p4 obj lst tmp)
  32.     (setq obj (vlax-ename->vla-object @e))
  33.     (if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'p1 'p3))))
  34.         (progn
  35.             (setq p1 (vlax-safearray->list p1)
  36.                 p3 (vlax-safearray->list p3)
  37.                 p2 (list (car p1) (cadr p3) (caddr p1))
  38.                 p4 (list (car p3) (cadr p1) (caddr p1))
  39.             )
  40.             (if (= "SPLINE" (cdr (assoc 0 (entget @e))))
  41.                 (progn
  42.                     (setq lst
  43.                         (mapcar '(lambda  (a b) (vlax-curve-getClosestPointToProjection @e a b t))
  44.                             (list p1 p2 p3 p4)
  45.                             '((1.0 0 0) (0 -1.0 0) (-1.0 0 0) (0 1.0 0))
  46.                         )
  47.                     )
  48.                     (setq tmp
  49.                         (list
  50.                             (apply 'mapcar (cons 'min lst))
  51.                             (apply 'mapcar (cons 'max lst))
  52.                         )
  53.                     )
  54.                 )
  55.                 (setq tmp (list p1 p3))
  56.             )
  57.         )
  58.         (setq tmp nil)
  59.     )
  60.     (vlax-release-object obj)
  61.     tmp
  62. )
发表于 2021-8-13 17:52:26 | 显示全部楼层
楼主的程序挺好的,唯一的缺点就是线型中的文字不在线的起点和终点之间对中
可参考下这个,在论坛里的
;;示例(HH:InputBox "显示重量,便于拷贝" "重量显示" "5.3")
(defun HH:InputBox (promptstr title default)
  ;;(setq str (VL-PRIN1-TO-STRING default))
  (wscriptPublic (strcat "dim ret \n ret=InputBox(\""               promptstr
                         "\", \""            title               "\", \""
                         default            "\")"
                        )
  )
)
;;[功能] 创建带文字的线型
(defun c:makelt (/ EXPRT FILE FN SS STR)
  ;; 错误处理
  (defun *error* (msg)
    (vl-bt)
    (while (not (equal (getvar "cmdnames") "")) (command nil))
    (cond (exprt (setvar 'expert exprt)))
    (setvar "nomutt" 0)
    (princ "\n 出错啦!")
    (princ)
  )
  (setq exprt (getvar 'expert))
  ;;(setq str (getstring T "\n Enter string for linetype: "))
  (setvar "nomutt" 1)
  (cond        ((and (princ "\n 拾取或者输入线型文字")             
              (setq ss (ssget "_+.:E:S" '((0 . "TEXT"))))
         )         
         (setq str (cdr (assoc 1 (entget (ssname ss 0)))))         
        )
        (T         
         (while (equal (setq str (HH:InputBox "线型中有文字" "带文字线型" "电线")) ""))
        )
  )
  (setvar "nomutt" 0)
  (setq File (vl-filename-mktemp nil nil ".lin"))
  ;;(setq file (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) "_mylt.lin"))
  (setq fn (open file "w"))
  (setq exprt (getvar 'expert))
  (write-line (strcat "*" str ", ---" str "---") fn)
  (write-line (strcat "A,0.5,-0.05,[\""
                      str
                      "\",STANDARD,S=0.1,R=0.0,X=-0.0,Y=-.05],"
                      (rtos (* -0.1 (strlen str)) 2 3)
              )
              fn
  )
  (close fn)
  (setvar 'expert 5)
  (command ".-linetype" "load" "*" file "")
  (setvar 'expert exprt)
  (vl-file-delete file);这句好象没有什么用处
  (princ))
 楼主| 发表于 2021-8-19 11:36:34 | 显示全部楼层
本帖最后由 lee50310 于 2021-8-24 08:50 编辑
yangchao2005090 发表于 2021-8-19 09:16
请问一下,这个线型编辑器生成的线型文件lin文件存放在哪个地方啊

如果你設定一個新線型 則新線型格式 會暫存在 程式的變數 ltdef  內

例: 查看變數內容     可在cad 的 Connand: !ltdef  按Enter

回應: "\n*USER,--- - ---BE--- - ---BE--- - ---BE--- - ---\nA,4.375,-1.25,1.25,-1.25,4.375,-1.91467,[\"BE\",Standard,S=1.5,R=0.0,X=-1.26467,Y=-0.75],-1.91467"











发表于 2020-12-12 19:39:49 | 显示全部楼层
上传了,不管用  请问怎么可以做出来废弃线型?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2020-12-12 20:52:14 | 显示全部楼层
sunqv 发表于 2020-12-12 19:39
上传了,不管用  请问怎么可以做出来废弃线型?

廢氣管段 文字線型 操作方式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2020-12-13 07:56:04 来自手机 | 显示全部楼层
和我上面发的线型不一样呀大神?我那个线型是5mm,1mm空格,实线上面有个x

点评

那个X不是文字,是线型定义中设置的笔画  发表于 2020-12-13 12:06
发表于 2020-12-13 08:12:48 | 显示全部楼层
太实用了,感谢楼主。
发表于 2020-12-13 12:09:38 | 显示全部楼层
很不错
简单的文字线型用这个创建很方便

可以考虑下加入文字旋转角度、是否居中等设定
另外注意下高版本里线型定义里的新参数
发表于 2020-12-13 12:57:00 | 显示全部楼层
 楼主| 发表于 2020-12-14 08:10:07 | 显示全部楼层
本帖最后由 lee50310 于 2020-12-14 13:43 编辑
可以考虑下加入文字旋转角度、是否居中等设定
另外注意下高版本里线型定义里的新参数

感謝回復, 已後新版本可以增加此項


新参数找到原帖了

感謝告知
发表于 2020-12-14 09:05:30 | 显示全部楼层
感谢分享,非常的有用
发表于 2020-12-14 09:16:40 | 显示全部楼层
谢谢楼主分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-26 20:20 , Processed in 0.203696 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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