乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 58|回复: 2

[编程交流] 将图层状态替代应用于

[复制链接]

16

主题

68

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-6 07:03:03 | 显示全部楼层 |阅读模式
如何编写Lsp,使用某种过滤器将保存的图层状态分配给图形中的视口。(例如布局中名称以字符串开头/包含字符串的所有视口,或特定层中的所有视口…)
 
链接到其他线程:层状态保存更新问题
这种lisp可能是问题覆盖。
回复

使用道具 举报

16

主题

68

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-6 07:47:34 | 显示全部楼层
由于我不能用lisp编写代码,我将尝试起草代码的概念,欢迎对lsp的每个部分提供任何帮助。我会试着把它组合起来。。。
多斯利卜
 
  1. (defun C:CHLSTATEB (/ LAYOUTS PATTERN LAYERLIST ALLVIEWPORTLIST LISTALLST LAYERSTORE)
  2. (setq LAYOUTS(mapcar 'strcase(cons "MODEL" (layoutlist))))
  3. (if(and(setq PATTERN(strcase(getstring "Layoutname (with wildcards):")))
  4. (/= PATTERN "")
  5. )
  6. (progn
  7. ;;;Create LAYOUTS list using wildcards
  8. (setq LAYOUTS(vl-remove-if-not '(lambda(X)(wcmatch X PATTERN))LAYOUTS))
  9. (princ (strcat "\n" (itoa(length LAYOUTS))" layouts found."))
  10. (terpri)
  11. (princ LAYOUTS)
  12. (princ)
  13. (terpri)
  14. ;;;Create LAYERLIST list using onscreen list box
  15. (setq LAYERLIST (dos_layerlistbox
  16.    "Select layers to use:"
  17.    "(Off and frozen layers available)"
  18.    256) ;;enable multiple selection
  19.    )
  20. (terpri)
  21. (princ LAYERLIST)
  22. (princ)
  23. (terpri)
  24. ;;;Create ALLVIEWPORTLIST all viewports
  25. (setq ALLVIEWPORTLIST (vports))
  26. (terpri)
  27. (princ ALLVIEWPORTLIST)
  28. (princ)
  29. ;;;Select Layerstate to restore
  30. (setq LISTALLST (layerstate-getnames includehidden includexref))
  31. (terpri)
  32. (princ LISTALLST)
  33. (princ)
  34. (terpri)
  35. (setq LAYERSTORE (dos_listbox "Layerstates" "Select Layerstate to Restore" LISTALLST))
  36. )
  37. )
  38. )
;;;那么,我做了选择,现在怎么办?
 
  1. (foreach item (layoutlist)
  2. (if (wcmatch item LAYOUTS)
  3. (progn
  4.   (setvar "CTAB" item)
  5. ;;;Do the layerstate_restore if viewports are on the selected layers
  6. ;;;using: layerstate-restore layerstatename viewport [restoreflags])
  7. ;;;problem: viewport must not be nil to use flag 4 which is what i need here...
  8. ;;;is there a way to specify all or any?
  9. )
  10. )  
  11. )
回复

使用道具 举报

16

主题

68

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-6 08:28:57 | 显示全部楼层
或者,我做了选择。。。不,我做了用户输入,现在我必须过滤掉它并进行实际的图层状态恢复
 
我需要在ALLVIEWPORTLIST上使用ssdel,消除不在选定层和选定布局上的vievports
 
并创建VIEVPORTSTOCHANGE集
 
而不是在新集合上执行layerstaterestore。
 
不!ALLVIEWPORTLIST不好。。。我需要。。。
  1. (setq ALLVIEWPORTLIST (ssget "_X" (list '(0 . "VIEWPORT") (cons 410 (getvar 'ctab)))))
。。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 11:24 , Processed in 0.630673 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表