zhb236623 发表于 2011-12-6 15:18:01

Andyhon 发表于 2011-12-6 15:15 static/image/common/back.gif


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

看了这篇,问题解决。等会上传结果。。。谢谢ANDYHON关注。。。

zhb236623 发表于 2011-12-6 15:21:13

Andyhon 发表于 2011-12-5 17:39 static/image/common/back.gif
(defun c:c1 ()
(vl-load-com)
(princ "\n字串一: ")


;;程序中的字符串哪里来的?我有个从cad中复制到剪切板的。
;;;=================================================================*
;;;功能:向系统剪贴板写入文字                                       *
(defun ZML-CLIP-SETSTRING (STR / HTML RESULT)
(and (= (type STR) 'STR)
       (setq HTML (vlax-create-object "htmlfile"))
       (setq RESULT (vlax-invoke
                      (vlax-get      (vlax-get HTML 'PARENTWINDOW)
                              'CLIPBOARDDATA
                      )
                      'SETDATA
                      "Text"
                      STR
                  )
       )
       (vlax-release-object HTML)
)
)
;;;=================================================================*
;;函数测试
(defun c:c3 ()
(vl-load-com)
(setq ss (ssget '((0 . "*TEXT"))))
(setq i 0)
(setq last_stri_str "")
(repeat (sslength ss)
(setq txtcon (cdr (assoc 1 (entget (ssname ss i)))))
(setq txtcon_kuohao (strcat "(" txtcon ")"))

(setq last_stri   (vl-prin1-to-string txtcon_kuohao))
(setq last_stri_str (strcat last_stri_str last_stri))
(setq i (1+ i))
)

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


(setq str1 (vl-string-translate "/" "-" last_stri_str))
(setq str2 (vl-string-translate "\"" " " str1))

(while (> (strlen str2) (strlen (setq str2 (vl-string-subst "" " " str2)))))    ;;加了这句就可以了。

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

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


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


zhb236623 发表于 2011-12-6 15:22:35

Andyhon 发表于 2011-12-5 17:39 static/image/common/back.gif
(defun c:c1 ()
(vl-load-com)
(princ "\n字串一: ")


ANDYHON我这个不管地号有几行,都可以直接全选,不用选再次,程序可以达到要求。。

zhb236623 发表于 2011-12-6 15:26:06

Andyhon 发表于 2011-12-5 17:39 static/image/common/back.gif
(defun c:c1 ()
(vl-load-com)
(princ "\n字串一: ")


楼主的比较精简,不过我的程序能够达到自己的要求,用起来比较顺手。。。。还是要感谢您的指点。。。

Andyhon 发表于 2011-12-6 15:31:32

...不管地号有几行,都可以直接全选...
没有先后次序的问题?

zhb236623 发表于 2011-12-6 15:32:17

本帖最后由 zhb236623 于 2011-12-6 15:33 编辑

Andyhon 发表于 2011-12-6 15:15 http://bbs.mjtd.com/static/image/common/back.gif


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

还是有的我说的不够 详细。。。。

Andyhon 发表于 2011-12-6 15:41:34

...没有后缀...

只要能掌握运用函数,都可以给自己量身订制所需的程序底
程序通常都是依使用后所遇到的状况逐步补强滴
也惟有自己最清楚所能掌控的资讯.....

zhb236623 发表于 2011-12-6 17:24:30

本帖最后由 zhb236623 于 2011-12-6 17:27 编辑

Andyhon 发表于 2011-12-6 15:41 http://bbs.mjtd.com/static/image/common/back.gif
...没有后缀...

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


说的极是。。。就是没有后缀名   .dwg的时候。。。

zhb236623 发表于 2011-12-6 17:26:29

本帖最后由 zhb236623 于 2011-12-6 17:30 编辑

Andyhon 发表于 2011-12-6 15:31 http://bbs.mjtd.com/static/image/common/back.gif
...不管地号有几行,都可以直接全选...
没有先后次序的问题?

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


新地号全部比老地号长,所以如果要先后顺序的话只要加个长度判断,然后就可以了。

another2121 发表于 2011-12-14 12:38:04

zhb236623 发表于 2011-12-5 14:33 static/image/common/back.gif
修改完的程序。

非常好。。。很强大。。。。
页: 1 [2] 3
查看完整版本: 利用LISP程序把文字放到粘贴板里面(最终程序在二楼。常用CC/C1效果自己测试)