明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3139|回复: 10

[已解答] 关于文字处理的lsp,哪位大神帮我看下代码啊

  [复制链接]
发表于 2014-7-14 16:46:03 | 显示全部楼层 |阅读模式
本帖最后由 伪书虫86 于 2014-7-15 08:51 编辑

程序目标:框选多个单行文字后,在其下方600处生成对应的指定文字。。。如下:
16→BV-3*2.5-JDG20
20→BV-3*4-JDG20
25→BV-3*6-JDG20
32→BV-3*10-JDG25
               *
               *
菜鸟一个,凑了一段代码,可是怎么都调试不成功,哪位大神指导下啊,不胜感激了
还有那个在原文字下方指定距离输出新文字,有没有比我这个更简洁的代码啊?


在此特别感谢下xyp196、langjs、ZZXXQQ谢谢你们

  1. (defun c:cs( )
  2. (setvar "cmdecho" 0)
  3. (setq dlq '(16 20 25 32 40 50))
  4. (setq xj '(2.5 4 6 10 16 16))
  5. (setq gj '(20 20 20 25 32 32))
  6. (setvar "cmdecho" 0)
  7. (prompt "\n选择文字:")
  8. (setq ss (ssget '((0 . "TEXT"))))
  9. (setq ztys (cdr(assoc 7 ss)));字体样式
  10. (setq zg (cdr(assoc 40 ss)));字高
  11. (setq zb (cdr(assoc 10 ss)));坐标
  12. (setq tc (cdr(assoc 8 ss)));图层
  13. (setq i (sslength dlq))
  14. (while (= ss (nth i dlq))
  15. (setq txt (strcat "BV-3*" (nth i xj) "-JDG" (nth i gj)))
  16. (setq i (1- i))
  17. )
  18. (setq newzb (list (car zb1) (+ (cadr zb1) -600)))
  19. (command "text" "s" ztys newzb zg 0 txt)
  20. (command "chprop" (entlast) "" "la" tc "" )
  21. )
  22. (setvar "cmdecho" 1)
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2014-7-14 17:00:10 | 显示全部楼层
有没有人在啊。。。
发表于 2014-7-14 19:57:37 | 显示全部楼层


本帖子中包含更多资源

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

x
 楼主| 发表于 2014-7-14 20:09:33 | 显示全部楼层
xyp1964 发表于 2014-7-14 19:57

谢谢你额 ,但是有没有不需要你那个工具箱支持的独立的LSP啊?
发表于 2014-7-14 21:37:31 | 显示全部楼层
(defun c:cs (/ ent i lst n ss txt)
  (defun emod (ent i n) (subst (cons i n)(assoc i ent) ent ))
  (setvar "cmdecho" 0)
  (setq lst '(("16" "BV-3*2.5-JDG20") ("20" "BV-3*4-JDG20")("25" "BV-3*6-JDG20")   ("32" "BV-3*10-JDG25")))
  (prompt "\n选择文字:")
  (setq ss (ssget '((0 . "TEXT"))))
  (repeat (setq i (sslength ss))
    (setq ent (entget (ssname ss (setq i (1- i)))))
    (if (setq txt (assoc (cdr (assoc 1 ent)) lst))
    (entmake (emod (emod (cdr ent) 1 (cadr txt)) 10 (polar (cdr (assoc 10 ent)) (* 1.5 pi) 600))))
  )
  (princ)
)
发表于 2014-7-15 08:27:26 | 显示全部楼层
  1. (defun c:cs( )
  2. (setvar "cmdecho" 0)
  3. (setq dlq '("16" "20" "25" "32" "40" "50"))
  4. (setq xj '("2.5" "4" "6" "10" "16" "16"))
  5. (setq gj '("20" "20" "20" "25" "32" "32"))
  6. (setvar "cmdecho" 0)
  7. (prompt "\n选择文字:")
  8. (setq ss (ssget '((0 . "TEXT"))))
  9. (repeat (setq i (sslength ss))
  10. (setq en (entget(ssname ss (setq i (1- i)))))
  11. (setq zb (cdr(assoc 10 en)));坐标
  12. (setq tx (cdr(assoc 1 en)))
  13. (if (setq dl (member tx dlq)) (progn
  14.   (setq n (- (length dlq) (length dl)))
  15.   (setq txt (strcat "BV-3*" (nth n xj) "-JDG" (nth n gj)))
  16.   (setq newzb (mapcar '- zb '(0 600 0)))
  17.   (setq en (subst (cons 1 txt) (assoc 1 en) en))
  18.   (entmake (cdr(subst (cons 10 newzb) (assoc 10 en) en)))
  19. ))
  20. )
  21. (setvar "cmdecho" 1)
  22. (princ)
  23. )
 楼主| 发表于 2014-7-15 08:58:49 | 显示全部楼层
langjs 发表于 2014-7-14 21:37
(defun c:cs (/ ent i lst n ss txt)
  (defun emod (ent i n) (subst (cons i n)(assoc i ent) ent ))
  ...

谢谢你
再请教一下,当把文字特性里的 对正 改为居中后,输出的文字就跟原文字重叠了,这个怎么解决啊?(就是三楼图片中的那种效果,改下哪段代码就可以啊?)
 楼主| 发表于 2014-7-15 09:01:29 | 显示全部楼层
ZZXXQQ 发表于 2014-7-15 08:27

谢谢你用这么贴近我目前水平的代码帮我改好了
再请教一下,当把文字特性里的 对正 改为居中后,输出的文字就跟原文字重叠了,这个怎么解决啊?(就是三楼图片中的那种效果,改下哪段代码就可以啊?)
发表于 2014-7-16 07:35:51 | 显示全部楼层
伪书虫86 发表于 2014-7-15 09:01
谢谢你用这么贴近我目前水平的代码帮我改好了
再请教一下,当把文字特性里的 对正 改为居中后,输 ...

图片呢?没见到。
 楼主| 发表于 2014-7-16 12:55:56 | 显示全部楼层
ZZXXQQ 发表于 2014-7-16 07:35
图片呢?没见到。

是3楼xyp1964的那张图片
这个问题已经解决了,谢谢你哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 08:03 , Processed in 0.170361 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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