明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: zhb236623

利用LISP程序把文字放到粘贴板里面(最终程序在二楼。常用CC/C1效果自己测试)

  [复制链接]
 楼主| 发表于 2011-12-6 15:18:01 | 显示全部楼层
Andyhon 发表于 2011-12-6 15:15

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=31776

看了这篇,问题解决。等会上传结果。。。谢谢ANDYHON关注。。。
 楼主| 发表于 2011-12-6 15:21:13 | 显示全部楼层
Andyhon 发表于 2011-12-5 17:39
(defun c:c1 ()
  (vl-load-com)
  (princ "\n字串一: ")
  1. ;;程序中的字符串哪里来的?我有个从cad中复制到剪切板的。
  2. ;;;=================================================================*
  3. ;;;功能:向系统剪贴板写入文字                                       *
  4. (defun ZML-CLIP-SETSTRING (STR / HTML RESULT)
  5.   (and (= (type STR) 'STR)
  6.        (setq HTML (vlax-create-object "htmlfile"))
  7.        (setq RESULT (vlax-invoke
  8.                       (vlax-get        (vlax-get HTML 'PARENTWINDOW)
  9.                                 'CLIPBOARDDATA
  10.                       )
  11.                       'SETDATA
  12.                       "Text"
  13.                       STR
  14.                     )
  15.        )
  16.        (vlax-release-object HTML)
  17.   )
  18. )
  19. ;;;=================================================================*
  20. ;;函数测试
  21. (defun c:c3 ()
  22. (vl-load-com)
  23.   (setq ss (ssget '((0 . "*TEXT"))))
  24.   (setq i 0)
  25.   (setq last_stri_str "")
  26.   (repeat (sslength ss)
  27.   (setq txtcon (cdr (assoc 1 (entget (ssname ss i)))))
  28.   (setq txtcon_kuohao (strcat "(" txtcon ")"))

  29.   (setq last_stri   (vl-prin1-to-string txtcon_kuohao))
  30.   (setq last_stri_str (strcat last_stri_str last_stri))
  31. (setq i (1+ i))
  32. )

  33. (setq str0 (getvar "DwgName")       ;"宗地图.dwg"
  34.         str0 (substr str0 1 )
  35. )       ;"宗地图"


  36.   (setq str1 (vl-string-translate "/" "-" last_stri_str))
  37.   (setq str2 (vl-string-translate """ " " str1))
  38.   
  39.   (while (> (strlen str2) (strlen (setq str2 (vl-string-subst "" " " str2)))))    ;;加了这句就可以了。

  40. (setq str0 (vl-string-subst "" ".dwg"  str0))   。
  41. (setq str3 (strcat str0 str2))

  42.   (ZML-CLIP-SETSTRING str3)
  43.   (princ "\n文字已复制到剪切板,可以直接粘贴了!")
  44.   (princ)
  45. )


  46. ;;(while (> (strlen str) (strlen (setq str (vl-string-subst "" " " str)))))


 楼主| 发表于 2011-12-6 15:22:35 | 显示全部楼层
Andyhon 发表于 2011-12-5 17:39
(defun c:c1 ()
  (vl-load-com)
  (princ "\n字串一: ")

ANDYHON我这个不管地号有几行,都可以直接全选,不用选再次,程序可以达到要求。。
 楼主| 发表于 2011-12-6 15:26:06 | 显示全部楼层
Andyhon 发表于 2011-12-5 17:39
(defun c:c1 ()
  (vl-load-com)
  (princ "\n字串一: ")

楼主的比较精简,不过我的程序能够达到自己的要求,用起来比较顺手。。。。还是要感谢您的指点。。。
发表于 2011-12-6 15:31:32 | 显示全部楼层
...不管地号有几行,都可以直接全选...
没有先后次序的问题?
 楼主| 发表于 2011-12-6 15:32:17 | 显示全部楼层
本帖最后由 zhb236623 于 2011-12-6 15:33 编辑
Andyhon 发表于 2011-12-6 15:15


str0 (substr str0 1 (- (strlen str0) 4))  楼主这句也有点问题,有时候电脑设置成没有后缀(没有扩展名),这样就错了。

还是有的我说的不够 详细。。。。
发表于 2011-12-6 15:41:34 | 显示全部楼层
...没有后缀...

只要能掌握运用函数,都可以给自己量身订制所需的程序底
程序通常都是依使用后所遇到的状况逐步补强滴
也惟有自己最清楚所能掌控的资讯.....
 楼主| 发表于 2011-12-6 17:24:30 | 显示全部楼层
本帖最后由 zhb236623 于 2011-12-6 17:27 编辑
Andyhon 发表于 2011-12-6 15:41
...没有后缀...

只要能掌握运用函数,都可以给自己量身订制所需的程序底


说的极是。。。就是没有后缀名   .dwg  的时候。。。
 楼主| 发表于 2011-12-6 17:26:29 | 显示全部楼层
本帖最后由 zhb236623 于 2011-12-6 17:30 编辑
Andyhon 发表于 2011-12-6 15:31
...不管地号有几行,都可以直接全选...
没有先后次序的问题?


恩,是的,不需要先后,只是加上新老地号到时候找图纸方便。


新地号全部比老地号长,所以如果要先后顺序的话只要加个长度判断,然后就可以了。
发表于 2011-12-14 12:38:04 | 显示全部楼层
zhb236623 发表于 2011-12-5 14:33
修改完的程序。

非常好。。。很强大。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 01:52 , Processed in 0.162455 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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