乐筑天下

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

[编程交流] wcmatch

[复制链接]

31

主题

107

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 10:13:23 | 显示全部楼层 |阅读模式
你好
 
我正在努力做到这一点:
如果我选择一个匹配P*-1的文件。dwg它将获取该文件,将其外部参照到图纸中,然后根据生成的条件插入名为STAMP_1的块。
 
fname是我选择PNAMN-1的文件。图纸或PNAMN-2。图纸或PNAMN-3。图纸
 
  1. (defun c:test ( /  fname)
  2. (INSERT1)
  3. (if fname
  4. (cond
  5. (wcmatch fname "P*-1*")(STAMP_1)
  6. (wcmatch fname "P*-2*")(STAMP_2)
  7. ))
  8. );defun

INSERT1可以工作,它是所选文件PNAMN-1中的xfrefs。图纸或PNAMN-2。图纸或PNAMN-3。图纸。
现在我有了我想插入的块,但取决于PNAMN-*我选择了正确的STAMP\u 1/STAMP\u 2/STAMP-3插入。
STAMP_1和STAMP_2也可以工作,并插入带有J 0,0,0的块,具体如我所愿。
那么,wcmatch有什么问题?我错过了什么吗。我是新手。
谢谢你的帮助。
 
我还谈到:
  1. (defun c:test ( /  fname)
  2. (INSERT1)
  3. (if fname
  4. (cond
  5. ((wcmatch fname "P*-1*") T) (STAMP_1)
  6. ((wcmatch fname "P*-2*") T) (STAMP_2)
  7. ))
  8. );defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:21:58 | 显示全部楼层
  1. (defun c:test ( /  fname )
  2. (INSERT1)
  3. (if fname
  4.    (cond
  5.      ( (wcmatch fname "P*-1*") (STAMP_1) )
  6.      ( (wcmatch fname "P*-2*") (STAMP_2) )
  7.    )
  8. )
  9. )
回复

使用道具 举报

31

主题

107

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 10:25:34 | 显示全部楼层
插入外部参照后返回NIL。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 10:30:26 | 显示全部楼层
 
您可能需要在例程结束时添加(princ)才能平静地退出。
 
塔瓦特
回复

使用道具 举报

31

主题

107

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 10:35:16 | 显示全部楼层
Tharwat,返回nil,不插入块,但在dwg中进行外部参照。所以INSERT1可以,但STAMP\u 1或STAMP\u 2不行。
但当我单独完成这些功能时,它们确实起作用。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 10:40:48 | 显示全部楼层
那么,您可以发布与(INSERT1)相关的代码吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:41:49 | 显示全部楼层
 
您是否在示例文件名上测试了wcmatch条件?文件名是大写的吗?
 
  1. (defun c:test ( /  fname )
  2. (INSERT1)
  3. (if fname
  4.    (cond
  5.      (  (wcmatch fname "P*-1*") (STAMP_1) )
  6.      (  (wcmatch fname "P*-2*") (STAMP_2) )
  7.      (t (alert "No Conditions Met") )
  8.    )
  9. )
  10. )
回复

使用道具 举报

31

主题

107

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 10:49:52 | 显示全部楼层
  1. (Defun checkxref ()
  2. (if (tblsearch "layer" "P-------XREF")
  3. (command "_layer" "s" "P-------XREF" "")
  4. (command "_layer" "m" "P-------XREF"
  5. "c" "7" "" "lo"
  6. "P-------XREF" ""
  7. )
  8. )
  9. )
  10. (defun STAMP_1 (/ stamp1 oldlay )
  11. (initerr)
  12. (progn
  13. (setq stamp1 (strcat "..\\..\\KOMP_FIL\\Stämpel\\STAMP\\_STAMP-1.dwg"))
  14. ;(checkxref)
  15. (setq point0 (strcat "0,0,0"))
  16. (command "-insert" stamp1 point0 "1" "1" "0" "" "" "" "" "" "" "" "" "" "")
  17. )
  18. )
  19. (defun STAMP_2 (/ stamp2 oldlay )
  20. (initerr)
  21. (progn
  22. (setq stamp2 (strcat "..\\..\\KOMP_FIL\\Stämpel\\STAMP\\_STAMP-2.dwg"))
  23. ;(checkxref)
  24. (setq point0 (strcat "0,0,0"))
  25. (command "-insert" stamp2 point0 "1" "1" "0" "" "" "" "" "" "" "" "" "" "")
  26. )
  27. )
  28. ;;; CODE ORIGINALLY WRITTEN BY Lee_Mac, Thank you
  29. (defun INSERT1 (/ laycode lay_name fname oldlay path test)
  30. ;laycodes is a list of a drawing paths, layer names and preset colors.
  31. ;Each list within laycodes contains 3 elements (<path> <layer name> <layer color>)
  32. ;The first element is the block path.
  33. ;The second element is the layer name associated with the block
  34. ;The third item in a list references the layer color
  35. ;Any blocks found to come from a particular path will be inserted on a preset layer
  36. ;If the layer does not exist it will be created and a layer color assigned to it
  37. ;
  38. ;eg
  39. ;("K:\\CAD\\Block\\arrow" "A-------O2-" 1)
  40. ;A block inserted from "K:\\CAD\\Block\\arrow" will be inserted on layer "A-------O2-" which has a color 1
  41. ;
  42. ;Note the path is case sensitive
  43. ;(NAMNRUTA)
  44. (command "_.layer" "s" 0 "")
  45. (setq laycodesrelativepath (dos_relativepath "U:\\?\\?\\A\\Ritningar\\RITDEF\\?" "U:\\?\\?\\A\\Ritningar\\KOMP_FIL\\Stämpel" ))
  46. (setq point0 (strcat "0,0,0"))
  47. (setq laycodes '(
  48. ("U:\\p-q-r\\RF_TEST_AU\\A\\Ritningar\\KOMP_FIL\\Stämpel" "A-------F1-" 4) ;<-edit this list as required
  49. )
  50. )
  51. (setq stamppath (dos_relativepath "U:\\?\\?\\A\\Ritningar\\RITDEF\\?" "U:\\?\\?\\A\\Ritningar\\KOMP_FIL\\Stämpel" ))
  52. (IF (= (getvar "tilemode") 0)
  53. (progn
  54. (if
  55. ;select the drawing to insert
  56. (and (setq fname (dos_dwgpreview "Välj NAMNRUTA:" stamppath ".dwg")) (/= fname ""))
  57. ;if a file has been selected
  58. (progn
  59. ;store the current layer
  60. (setq oldlay (getvar "clayer"))
  61. ;retrieve the path
  62. (setq path (vl-filename-directory fname))
  63. (if
  64. ;check the path against the laycodes
  65. (setq test (assoc path laycodes))
  66. ;if a match is found
  67. (or
  68. ;test if the preset layer exists
  69. (tblsearch "layer" (setq lay_name (cadr test)))
  70. ;if it does not add it
  71. (and
  72. (command "layer" "m" lay_name "c" (caddr test) lay_name "")
  73. ;<-line added to change the layer to the required color
  74. )
  75. )
  76. ;if the file does not match the predefined
  77. (alert
  78. (strcat "\n<" (vl-filename-base fname) "> är EJ vald från GILTIG katalog"
  79. " \nGiltiga Kataloger är :"
  80. (apply 'strcat (mapcar '(lambda (x) (strcat "\n\t" (car x))) laycodes))
  81. "\nBlock <" (vl-filename-base fname) "> skall vara infogad i lager <" (getvar "clayer")">")))
  82. (and lay_name (setvar "clayer" lay_name))
  83. (setvar "cmdecho" 0)
  84. (command "_.xref" "o" fname "0,0" "" "" "" )
  85. (and lay_name (setvar "clayer" oldlay))
  86. )
  87. (alert "\nIngen fil vald...")
  88. )
  89. (princ))(alert "Infoga Skalsymbol i RitDef:ar istället!!"))
  90. (C:XR:RelativePath)
  91. )
  92. ;;;
  93. (defun c:test ( / svar fname)
  94. ;;;(setq flag (dos_msgbox "Spara på Rätt ställe. Om Sparat, tryck JA/YES, om ej Spara och kör igen!" 4 3))
  95. ;;; ;display the message box
  96. ;;;
  97. ;;;
  98. ;;; (if (= flag 6)
  99. ;;; ;if Yes selected
  100. ;;; (progn
  101. ;;; (initdia)
  102. ;;;(if (/= (getvar "ctab") "Model")
  103. ;;; (progn
  104. ;;; (setq
  105. ;;; svar (dos_msgbox
  106. ;;;"SPARA på RÄTT STÄLLE. Om sparat VÄLJ JA, annars nej och SPARA på rätt ställe och KÖR IGEN!)"
  107. ;;; "SÄTT IN STÄMPEL!"
  108. ;;; 4
  109. ;;; 3
  110. ;;; )
  111. ;;; )
  112. ;;; (IF (= svar 6)
  113. ;;;
  114. (progn
  115. (INSERT1)
  116. (if fname
  117. (cond
  118. ( (wcmatch fname "PNAMN*1*") (STAMP_1) )
  119. ( (wcmatch fname "PNAMN*2*") (STAMP_2) )
  120. )
  121. ))
  122. )
  123. (princ)
  124. ;;; (initdia)
  125. ;;; (command "_.save")
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 10:52:19 | 显示全部楼层
 
祝贺你第一次参加。
 
以下代码需要更正,
  1. (defun c:test ()
  2. (INSERT1)
  3. (if (ssget "x" '((2 . "PNAMN-?")))
  4.   (progn
  5.    
  6.     (if
  7.      ( (wcmatch fname "PNAMN*1*")  (STAMP_2) )
  8.      ( (wcmatch fname "PNAMN*2*")  (STAMP_2) ) )
  9.    )
  10. ))
  11. (princ)

 
上述代码不需要功能(strcat),
 
  1. (setq stamp1 [b][color="red"](strcat[/color][/b] "..\\..\\KOMP_FIL\\Stämpel\\STAMP\\_STAMP-1.dwg"))
  2. [color="red"][b](setq point0 (strcat "0,0,0"))[/b][/color]
  3. (command "-insert" stamp2 point0 "1" "1" "0" "" "" "" "" "" "" "" "" "" "")
  4. )
  5. )

 
当做
 
塔瓦特
回复

使用道具 举报

31

主题

107

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 10:58:53 | 显示全部楼层
隐马尔可夫模型。。。
STAMP_2似乎没有插入。。。它仍然插入STAMP_1中的块
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 22:06 , Processed in 0.261295 second(s), 73 queries .

© 2020-2025 乐筑天下

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