明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1746|回复: 14

[提问] 做了一个切换窗口的程序,求大神完善

[复制链接]
发表于 2023-9-7 15:08:24 | 显示全部楼层 |阅读模式
本帖最后由 yu960312 于 2023-9-7 16:53 编辑

如下程序,求完善双击列表直接切换窗口功能


  1. (defun C:sw (/ dc)
  2. (defun mystrcat1 (i);;文本框1
  3. (if (= fn 0)
  4. (set_tile "edit_box1" (setq dc(cadr (nth (atoi i) myList))))
  5. (set_tile "edit_box1" (setq dc(car(nth (atoi i) findlist))))
  6. )
  7. ;(if (= $reason 4);;双击
  8. ;(progn
  9. ;(my_qh)
  10. ;)
  11. ;)
  12. )

  13. (defun my_qh();;切换按钮
  14. (setq m 0
  15. dwg nil
  16. n (length myList)
  17. dwgn 0
  18. )
  19. (if dc
  20. (progn
  21. (setq dwgn 1)
  22. (while (< m n)
  23. (setq str(nth m myList))
  24. (setq str1(cadr str))
  25. (if  (wcmatch str1 dc)
  26. (progn
  27. (setq str2(caddr str))
  28. (setq dwg(list str2))
  29. (setq m (+ n 1))
  30. )
  31. )
  32. (setq m (+ m 1))
  33. )
  34. )
  35. )
  36. (princ)
  37. )

  38. (defun my_cz();;查找按钮
  39. (setq dcc(get_tile "edit_box1"))
  40. (if (/= dcc "")
  41. (progn
  42. (setq fn 1)
  43. (setq findlist '())
  44. (setq findlist1 '())
  45. (setq finds(strcat "*" dcc "*"))
  46. (setq m 0 n (length myList))
  47. (while (< m n)
  48. (setq str(nth m myList))
  49. (setq str1(cadr str))
  50. (setq str2(caddr str))
  51. (if  (wcmatch str1 finds)
  52. (progn
  53. (setq findlist(append findlist (list (list str1 str2))))
  54. )
  55. )
  56. (setq m (+ m 1))
  57. )
  58. )
  59. )

  60. (if (> (length findlist) 0)
  61. (progn
  62. (start_list "mylist" 3)
  63. (foreach x findlist
  64. (add_list (car x))
  65. )
  66. (end_list)
  67. (alert "\n查找完成 ! ! !")
  68. )
  69. (alert "\n未找到 ! ! !")
  70. )

  71. (princ)
  72. )

  73. (defun my_sx();;刷新按钮
  74. (setq i 0)
  75. (setq fn 0)
  76. (start_list "mylist" 3)
  77. (foreach x myList
  78. (add_list (cadr x))
  79. )
  80. (end_list)
  81. (alert "\n刷新成功 ! ! !")
  82. )

  83. (setq acdocs (vla-get-Documents (vlax-get-acad-object)))
  84. (setq i 0)
  85. (setq fn 0)
  86. (setq myList '())
  87. ;;myList(不带路径列表 带路径列表 object列表)
  88. (vlax-for item acdocs
  89. ;(vlax-dump-object item)
  90. (setq i(+ i 1))
  91. (setq name1 (vlax-get-property item 'Name))
  92. (setq name2 (vlax-get-property item 'WindowTitle))
  93. (setq myList(append myList (list (list name1 name2 item))));;带路径列表&object列表
  94. )

  95. (setq dcl_id (load_dialog "DCL.dcl"))
  96. (new_dialog "DCL_4" dcl_id)
  97. (action_tile "mylist" "(setq list1_value $value)(mystrcat1 list1_value)")
  98. (action_tile "button1" "(done_dialog 2)(my_qh)")
  99. (action_tile "button2" "(my_cz)")
  100. (action_tile "button3" "(my_sx)")

  101. (setq m 0 n (length myList))
  102. (while (< m n)
  103. (setq str(nth m myList))
  104. (setq str1(car str))
  105. (if  (wcmatch str1 (getvar "dwgname"))
  106. (progn
  107. (setq str2(cadr str))
  108. (set_tile "edit_box1" str2)
  109. (setq m (+ n 1))
  110. )
  111. )
  112. (setq m (+ m 1))
  113. )

  114. (start_list "mylist" 3)
  115. (foreach x myList
  116. (add_list (cadr x))
  117. )
  118. (end_list)
  119. (setq code(start_dialog))
  120. (unload_dialog dcl_id)

  121. (cond
  122. ((= code 2)
  123. (progn
  124. (if (= dwgn 1)
  125. (progn
  126. (vl-catch-all-apply 'vla-Activate dwg)
  127. )
  128. (progn
  129. (princ (strcat "\n错误: 请选择切换窗口文件的路径 ! ! !"))
  130. (alert (strcat "\n错误: 请选择切换窗口文件的路径 ! ! !"))
  131. )
  132. )
  133. )
  134. )
  135. )
  136. (princ)
  137. )



本帖子中包含更多资源

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

x

评分

参与人数 5明经币 +5 收起 理由
vista228 + 1 很给力!
菜鸟初来乍到 + 1
bssurvey + 1 赞一个!
ssyfeng + 1 加油!
baitang36 + 1 很给力!

查看全部评分

 楼主| 发表于 2023-9-8 15:04:27 | 显示全部楼层
guankuiwu 发表于 2023-9-8 09:25
(action_tile "mylist" "(setq list1_value $value)(mystrcat1 list1_value)(if (= $reason 4)(done_dialog ...

等下试试看,感谢大佬
 楼主| 发表于 2023-9-8 18:41:14 | 显示全部楼层
guankuiwu 发表于 2023-9-8 09:25
(action_tile "mylist" "(setq list1_value $value)(mystrcat1 list1_value)(if (= $reason 4)(done_dialog ...

完美解决,感谢
 楼主| 发表于 2023-9-7 18:19:13 | 显示全部楼层
Bao_lai 发表于 2023-9-7 18:16
虽然cad自带有图纸标签功能,你这个用不上,但还是为你钻研的精神点赞。

平时打开图档太多,找图比较麻烦,才搞了个这个程序
发表于 2023-9-7 16:39:46 | 显示全部楼层
兄弟你也太厉害了。
发表于 2023-9-7 18:16:16 | 显示全部楼层
虽然cad自带有图纸标签功能,你这个用不上,但还是为你钻研的精神点赞。
发表于 2023-9-7 20:24:34 | 显示全部楼层
yu960312 发表于 2023-9-7 18:19
平时打开图档太多,找图比较麻烦,才搞了个这个程序

你的技术让人眼前一亮
发表于 2023-9-7 21:05:05 | 显示全部楼层
这个是需要DCL支持吗?还是可以直接在CAD加载LSP?
发表于 2023-9-7 23:49:01 | 显示全部楼层
感谢大佬分享
发表于 2023-9-8 08:43:36 | 显示全部楼层
谢谢楼主分享
发表于 2023-9-8 08:55:32 | 显示全部楼层
看着不错,多谢分享
发表于 2023-9-8 08:56:10 | 显示全部楼层
出现这个弹窗,无法正常使用。

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-17 04:40 , Processed in 0.182333 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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