明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1620|回复: 11

请教将内容写入剪切板的程序,怎么改改呀

  [复制链接]
发表于 2020-10-2 08:38:51 | 显示全部楼层 |阅读模式
1明经币

代码来自
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85614&extra=&highlight=%BC%F4%C7%D0%B0%E5&page=2
的14楼
这个代码我也用了一段时间了,只是随机性的会出现ActiveX错误,很是烦人,下面的代码可以改成不用ActiveX吗。
下面代码红色部分求一段更通用的代码来替换一下。拜托了。




(defun c:w2()
(vl-load-com)
  (setq txtcon (strcat))
     (setq txtss (ssget '((0 . "*TEXT,DIMENSION"))))
    (setq ssv (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))))
  (setq i 0)
  (setq txtcon (strcat))
  (repeat (vla-get-count ssv)
            (setq txtcon (apply '(lambda (v) (setq txtcon (strcat txtcon  v "\n ")))
                         (progn
                           (if (= (vla-get-ObjectName (vla-item ssv i)) "AcDbRotatedDimension")
                               (progn (if (= (vla-get-TextOverride (vla-item ssv i)) "")
                                      (setq pt (rtos (vla-get-Measurement (vla-item ssv i)) 2 2))
                                      (setq pt (vla-get-TextOverride (vla-item ssv i)) )))
                               (setq pt (vla-get-TextString (vla-item ssv i)))
                           )
                            (list pt)
                          )))
            (setq i (1+ i))
            )
  (ZML-CLIP-SETSTRING txtcon)
  (princ "\n文字已复制到剪切板,可以直接粘贴了!")
(princ)
)
;批量调整

最佳答案

查看完整内容

;批量调整 (defun c:w2() (vl-load-com) ;(setq txtcon (strcat)) ;(setq txtss (ssget '((0 . "*TEXT,DIMENSION")))) ;(setq ssv (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (if (= (setq txtss (ssget '((0 . "*TEXT,DIMENSION")))) nil) (vl-exit-with-error (princ "\n没有选取到文本!")) ) (setq i 0) (setq txtcon (strcat)) ;(repeat ...

评分

参与人数 1金钱 +10 收起 理由
758586 + 10 赞一个!

查看全部评分

发表于 2020-10-2 08:38:52 | 显示全部楼层
;批量调整
(defun c:w2()
   (vl-load-com)
   ;(setq txtcon (strcat))
   ;(setq txtss (ssget '((0 . "*TEXT,DIMENSION"))))
   ;(setq ssv (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))))
   (if (= (setq txtss (ssget '((0 . "*TEXT,DIMENSION")))) nil)
       (vl-exit-with-error (princ "\n没有选取到文本!"))
   )
   (setq i 0)
   (setq txtcon (strcat))
   ;(repeat (vla-get-count ssv)
   (repeat (sslength txtss)
       (setq txtobj (vlax-ename->vla-object (ssname txtss i)))
       (setq txtcon (apply '(lambda (v) (setq txtcon (strcat txtcon  v "\n ")))
                         (progn
                           ;(if (= (vla-get-ObjectName (vla-item ssv i)) "AcDbRotatedDimension")
                           (if (= (vla-get-ObjectName txtobj) "AcDbRotatedDimension")
                               (progn
                                    ;(if (= (vla-get-TextOverride (vla-item ssv i)) "")
                                    (if (= (vla-get-TextOverride txtobj) "")  
                                        ;(setq pt (rtos (vla-get-Measurement (vla-item ssv i)) 2 2))
                                        (setq pt (rtos (vla-get-Measurement txtobj) 2 2))
                                        ;(setq pt (vla-get-TextOverride (vla-item ssv i)) )
                                        (setq pt (vla-get-TextOverride txtobj) )
                                    )
                                )
                                ;(setq pt (vla-get-TextString (vla-item ssv i)))
                                (setq pt (vla-get-TextString txtobj))
                           )
                            (list pt)
                          ))
       )
       (setq i (1+ i))
  )
  (ZML-CLIP-SETSTRING txtcon)
  (princ "\n文字已复制到剪切板,可以直接粘贴了!")
  (princ)
)

评分

参与人数 2明经币 +2 收起 理由
758586 + 1 很给力!
xj6019 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-10-2 22:21:40 | 显示全部楼层
本帖最后由 xj6019 于 2020-10-3 18:41 编辑

还是有不行的情况,继续有待优化
回复

使用道具 举报

 楼主| 发表于 2020-10-3 11:22:02 | 显示全部楼层
本帖最后由 xj6019 于 2020-10-3 11:24 编辑



这里发错了
回复

使用道具 举报

 楼主| 发表于 2020-10-3 11:24:24 | 显示全部楼层
yshf 发表于 2020-10-2 08:38
;批量调整
(defun c:w2()
   (vl-load-com)


你好,再拜托一下,帮我看看这个文件里面的尺寸行吗,横向的尺寸提取没问题,为什么竖向的尺寸就不能提取呢。提取到剪切板的子函数一起贴上,您测试一下。麻烦了.

(vl-load-com)
(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)
  )
)

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2020-10-3 11:27:13 | 显示全部楼层
本帖最后由 xj6019 于 2020-10-3 19:01 编辑
yshf 发表于 2020-10-2 08:38
;批量调整
(defun c:w2()
   (vl-load-com)

上面测试文件里面只有一个方向不能提取,在另外一个文件内,两个方向都不行,我发现正常dli出来的尺寸都没问题,我用画线批量拉出来的尺寸,提取就不能成功,您看看,代码能再修正一下吗,麻烦你了
回复

使用道具 举报

 楼主| 发表于 2020-10-3 19:40:45 | 显示全部楼层
vla-get-TextString  这个可以用其他什么函数替代吗
回复

使用道具 举报

发表于 2020-10-4 10:22:32 | 显示全部楼层
所提供的“测试文件.dwg”有问题,下载后打开时显示“图形文件无效”。

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-10-4 11:27:51 | 显示全部楼层
yshf 发表于 2020-10-4 10:22
所提供的“测试文件.dwg”有问题,下载后打开时显示“图形文件无效”。

能提供个邮箱吗,可以把文件发你的邮箱里面
回复

使用道具 举报

发表于 2020-10-5 23:14:14 | 显示全部楼层
测试文件中对齐标注无TextString属性

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 22:50 , Processed in 0.199408 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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