明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7034|回复: 34

[源码] 给新手练手--调整行距 支持CAD文字、天正单行和多行文字、图块、天正标高等

  [复制链接]
发表于 2021-3-2 19:58:02 | 显示全部楼层 |阅读模式
本帖最后由 print1985 于 2021-3-2 19:59 编辑



调整行距hj,支持CAD文字、天正单行和多行文字、图块、属性字、天正标高、cad表格、cad尺寸
其中调整天正标高行距非常适合水、暖专业画系统图时,直接复制建筑立面标高来调整行距

部分代码来自论坛,感谢各位大神
技术含量不高,但是水平有限错误难免,如有问题请留言


现在明经不能上传附件 如果下面代码复制不能使用 请到晓东下载
http://bbs.xdcad.net/thread-727738-1-1.html


  1. ;;调整行距hj 支持CAD文字、天正单行和多行文字、图块、属性字、天正标高、cad表格、cad尺寸
  2. (setq BGhangju nil)
  3. (defun c:hj ( / *error* a all b c e hangju1 hangju2 l m n p snap x x0 xyz xyz_new y y0 z)
  4.   (defun *error* (msg)  ;错误处理函数
  5.     (if snap (setvar "osmode" snap)) ;恢复捕捉
  6.     (if (< 18 (atoi (substr (getvar "acadver") 1 2)))  ;判断CAD版本,高版本用command-s
  7.       (command-s "undo" "e") ;CAD高版本用
  8.       (command "undo" "e") ;低版本用
  9.     )
  10.     (setvar "cmdecho" 1) ;打开命令行提示
  11.     (princ msg)
  12.   )

  13.   (if (setq a (ssget (list (cons 0 "*TEXT,DIMENSION,INSERT,ATTDEF,ACAD_TABLE,TCH_ELEVATION"))))
  14.     (progn
  15.       (setq n (sslength a))
  16.       (setq m 0)
  17.       (while (< m n)
  18.         (setq all (append all (list (entget (ssname a m)))))
  19.         (setq m (1+ m))
  20.       )
  21.       (setq l 0) ;按y坐标降序排列
  22.       (setq m 1)
  23.       (while (< l n)
  24.         (setq b (nth l all))
  25.         (while (< m n)
  26.           (setq c (nth m all))
  27.           (if (> (nth 2 (assoc '10 c)) (nth 2 (assoc '10 b)))
  28.             (progn
  29.               (setq all (subst 'aa (nth l all) all))
  30.               (setq all (subst 'bb (nth m all) all))
  31.               (setq all (subst c 'aa all))
  32.               (setq all (subst b 'bb all))
  33.               (setq b c)
  34.             )
  35.           )
  36.           (setq m (1+ m))
  37.         )
  38.         (setq l (1+ l))
  39.         (setq m (1+ l))
  40.       )
  41.       (setq p (cdr (assoc '10 (car all))))
  42.       (setq hangju2 2000) ;默认行距为2000,自行修改
  43.       (if (or (= BGhangju 0) (= BGhangju nil))
  44.         (if (setq BGhangju (getint (strcat "\n行距<" (rtos hangju2) ">:")))
  45.           (setq hangju2 BGhangju)
  46.         )
  47.         (if (setq hangju1 (getint (strcat "\n行距<" (rtos BGhangju) ">:")))
  48.          (progn
  49.            (setq hangju2 hangju1)
  50.            (setq BGhangju hangju1)
  51.          )
  52.           (setq hangju2 BGhangju)
  53.         )
  54.       )
  55.       (setq x0 (car p))
  56.       (setq y0 (cadr p))
  57.       (setq m 0)
  58.       (setvar "cmdecho" 0) ;关闭命令行提示
  59.       (vl-cmdf "undo" "be") ;命令开始标记
  60.       (setq snap (getvar "osmode")) ;取得捕捉参数
  61.       (setvar "osmode" 0) ;关闭捕捉
  62.       (while (< m n)
  63.         (setq b (nth m all))
  64.         (setq e (cdr (assoc -1 b))) ;图原名
  65.         (setq z (nth 3 (assoc 10 b)))
  66.         (setq x (nth 1 (assoc 10 b)))
  67.         (setq y (nth 2 (assoc 10 b)))
  68.         (setq xyz (list x y z)) ;老坐标
  69.         (setq xyz_new (list x0 y0 z)) ;新坐标
  70.         (vl-cmdf "move" e "" xyz xyz_new) ;移动
  71.         (setq y0 (- y0 hangju2))
  72.         (setq m (1+ m))
  73.       )
  74.       (setvar "osmode" snap) ;打开捕捉
  75.       (vl-cmdf "undo" "e") ;命令结束标记
  76.       (setvar "cmdecho" 1) ;打开命令行提示
  77.     )
  78.   )
  79.   (princ)
  80. )




评分

参与人数 4明经币 +4 金钱 +6 收起 理由
轻尘 + 1 + 6 很给力!
USER2128 + 1 赞一个!
start4444 + 1 很给力!
tigcat + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-7-14 15:02:56 | 显示全部楼层
lingduwx 发表于 2021-9-17 09:43
我的字高是统一的,文字在布局之上,行距默认只能整数,行距为4稍微有点大,行距为3又稍小了点,希望能支 ...

将代码中46~49行替换为下列代码即可
        (if (setq BGhangju (getdist (strcat "\n行距<" (rtos hangju2) ">:")))
          (setq hangju2 BGhangju)
        )
        (if (setq hangju1 (getdist (strcat "\n行距<" (rtos BGhangju) ">:")))
发表于 2021-4-29 15:22:18 | 显示全部楼层
我搜天正竟然看到你 12年的提问 《请问怎样读取天正软件图纸比例》 本来想说一下 发现是12年的帖子  又看见这个帖子 你竟然还在活跃着 我也与天正斗智斗勇好几年了 写了一堆基于天正的命令玩 那个获取天正比例的命令是 (TGetPScale)  不知道现在给你说还晚不晚  我也是翻天正目录下的lisp文件自己无意间发现的 已经在好多个命令中使用了 哈哈
发表于 2022-7-16 09:17:20 | 显示全部楼层
sammy 发表于 2022-7-14 15:02
将代码中46~49行替换为下列代码即可
        (if (setq BGhangju (getdist (strcat "\n行距:")))
    ...

谢谢,这下非常适合我使用了
发表于 2021-3-2 22:06:13 | 显示全部楼层
本帖最后由 vitalgg 于 2021-3-2 22:25 编辑

这个不错,已收录
http://atlisp.cn/package-info?name=align-all&edition=stable

发表于 2021-3-2 22:10:16 | 显示全部楼层
阿甘大侠作品井喷啊
 楼主| 发表于 2021-3-3 17:08:06 | 显示全部楼层
vitalgg 发表于 2021-3-2 22:06
这个不错,已收录
http://atlisp.cn/package-info?name=align-all&edition=stable

是插件集合管理工具?好高级的感觉 给大家介绍介绍呗
发表于 2021-3-3 17:31:06 | 显示全部楼层
print1985 发表于 2021-3-3 17:08
是插件集合管理工具?好高级的感觉 给大家介绍介绍呗

这是这个网站首页的 下载 安装就可以了  http://atlisp.cn
 楼主| 发表于 2021-3-3 17:48:56 | 显示全部楼层
vitalgg 发表于 2021-3-3 17:31
这是这个网站首页的 下载 安装就可以了  http://atlisp.cn

非常棒
发表于 2021-3-3 17:54:52 | 显示全部楼层

你开发的程序 可以整理合并一下,发布到 @lisp .
别人就可以下载使用了。你的程序也很棒。
发表于 2021-3-4 10:03:21 | 显示全部楼层
有没有水平对齐的呢
发表于 2021-3-4 11:39:16 | 显示全部楼层
mark一下,以备学习
发表于 2021-3-5 08:58:12 | 显示全部楼层
支持  不错的源码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 07:57 , Processed in 0.180924 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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