明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: tukuitk

[注意]怎样实现这个?

  [复制链接]
 楼主| 发表于 2003-11-1 10:26:00 | 显示全部楼层
对,我咋没想到避嫌呢,等龙兄上来了我再发上来,免得龙兄……,呵呵呵
发表于 2003-11-3 08:13:00 | 显示全部楼层
程序?
 楼主| 发表于 2003-11-3 12:20:00 | 显示全部楼层
本帖最后由 作者 于 2003-11-3 13:53:57 编辑

龙兄:
你终于上来了!昨天我们放假了,没上网。现在我把程序放上来,你瞧瞧,还是给我加点积分讪!是你答应了的哟 :)
请你和飞哥都把你们的实现这个功能的程序放上来,让我们拜读一下,好吗?
  1. (defun creatTextList (/ ss i ent)
  2.   (princ "\n请选择单行文字或多行文字:")
  3.   (setq ss (ssget '((0 . "*TEXT"))))
  4.   (setq i 0)
  5.   (repeat (SSLENGTH ss)
  6.     (setq ent (ssname ss i))
  7.     (setq
  8.       TextList (append TextList (list (cdr (assoc 1 (entget ent)))))
  9.     )
  10.     (setq i (+ i 1))
  11.   )
  12. )
  13. ;;;Fill
  14. (defun Fill (entBlock Text tag / i okEnt subEnt)
  15.   (setq i 0)
  16.   (setq subEnt (entnext entBlock))
  17.   (while subEnt
  18.     (if        (= (cdr (assoc 0 (entget subEnt))) "ATTRIB")
  19.       (progn
  20.         (if (= (cdr (assoc 2 (entget subEnt))) tag)
  21.           (progn
  22.             (setq
  23.               okEnt (subst (cons 1 Text)
  24.                            (assoc 1 (entget subEnt))
  25.                            (entget subEnt)
  26.                     )
  27.             )
  28.             (entmod okEnt)
  29.             (entupd entBlock)
  30.           )
  31.         )
  32.       )
  33.     )
  34.     (setq subEnt (entnext subEnt))
  35.   )
  36.   (princ)
  37. )
  38. ;;;end defun
  39. (Defun getList (entBlock dxf / slist Blockname AttEnt)
  40.   (setq slist (entget entBlock))
  41.   (SetQ        Blockname (Cdr (Assoc 2 slist))
  42.         slist          (TblSearch "BLOCK" Blockname)
  43.   )
  44.   (SetQ AttEnt (Cdr (Assoc -2 slist)))
  45.   (While AttEnt
  46.     (setq slist (entget AttEnt))
  47.     (if        (/= (cdr (assoc dxf slist)) nil)
  48.       (setq ReList (append ReList (list (cdr (assoc dxf slist)))))
  49.     )
  50.     (setq AttEnt (EntNext AttEnt))
  51.   )
  52.   (princ)
  53. )
  54. ;;;end defun

  55. (defun c:AttFill (/            ssBlock   j                jj          Block0
  56.                   u            entBlockList        TagList          ShowList
  57.                   v            TextList  ok        input          AttRefList
  58.                   ReList
  59.                  )
  60.   (setvar "CMDECHO" 0)
  61.   (command "undo" "begin")
  62.   (creatTextList)
  63.   (princ "\n请选择属性参照:")
  64.   (setq ssBlock (ssget '((0 . "INSERT"))))
  65.   (setq j 0)
  66.   (while (< j (sslength ssBlock))
  67.     (setq Block0 (ssname ssBlock j))
  68.     (setq entBlockList (append entBlockList (list Block0)))
  69.     (setq j (1+ j))
  70.   )
  71.   (setq jj 0)
  72.   (setq input 0)
  73.   (while (< jj (length entBlockList))
  74.     (getList (nth jj entBlockList) 2)
  75.     (setq TagList ReList)
  76.     (setq v 0
  77.           ShowList ""
  78.     )
  79.     (princ
  80.       (strcat "\n 所选的第" (itoa (+ 1 jj v)) "文字将填到: \n")
  81.     )
  82.     (repeat (length TagList)
  83.       (setq ShowList
  84.              (strcat ShowList
  85.                      (strcat (itoa v) "-" (nth v TagList) "  ")
  86.              )
  87.       )
  88.       (setq v (1+ v))
  89.     )
  90.     (setq ok (getint (strcat ShowList "   <" (itoa input) ">   ")))
  91.     (if        (= ok nil)
  92.       (setq ok input)
  93.       (setq input ok)
  94.     )
  95.     (if        (<= ok v)
  96.       (fill (nth jj entBlockList)
  97.             (nth jj TextList)
  98.             (nth ok TagList)
  99.       )
  100.       (exit)
  101.     )
  102.     (setq TagList nil
  103.           ReList nil
  104.           AttRefList
  105.            nil
  106.     )
  107.     (setq jj (1+ jj))
  108.   )
  109.   (command "undo" "end")
  110.   (princ)
  111. )
发表于 2003-11-3 15:45:00 | 显示全部楼层
本帖最后由 作者 于 2003-11-3 16:43:04 编辑

缺点:
1.        会修改相同提示属性
2.        有累积修改图块属性(即修改属性会连同上一个图块同时修改如下圖:)


先把以上修正好吗?



等修好我会再放上源代码!

本帖子中包含更多资源

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

x
 楼主| 发表于 2003-11-3 15:51:00 | 显示全部楼层
龙兄,我可不知道你的程序是不是for R14的哟。
你说的情况我怎么没发生?文字和块我是一个一个选择的。
发表于 2003-11-3 16:02:00 | 显示全部楼层
Sorry!圖是繁體的,希望你能用來測試!



我的程序是R14的,我可把它編譯為arx檔,只是檔案太大花不來,源代碼明天貼上(最後期限-要延期嗎?)

本帖子中包含更多资源

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

x
发表于 2003-11-3 16:07:00 | 显示全部楼层
注意:這程序!
會修改相同提示屬性

;;;Fill
(defun Fill (entBlock Text tag / i okEnt subEnt)
  (setq i 0)
  (setq subEnt (entnext entBlock))
  (while subEnt
    (if (= (cdr (assoc 0 (entget subEnt))) "ATTRIB")
      (progn
(if (= (cdr (assoc 2 (entget subEnt))) tag)
   (progn
     (setq
       okEnt (subst (cons 1 Text)
      (assoc 1 (entget subEnt))
      (entget subEnt)
      )
     )
     (entmod okEnt)
     (entupd entBlock)
   )
)
      )
    )
    (setq subEnt (entnext subEnt))
  )
  (princ)
)
 楼主| 发表于 2003-11-3 16:13:00 | 显示全部楼层
是的,我还没注意到呢!让我再改一下!
 楼主| 发表于 2003-11-3 16:27:00 | 显示全部楼层
本帖最后由 作者 于 2003-11-3 16:53:38 编辑

改为如下:
  1. (defun creatTextList (/ ss i ent)
  2.   (princ "\n请选择单行文字或多行文字:")
  3.   (setq ss (ssget '((0 . "*TEXT"))))
  4.   (setq i 0)
  5.   (repeat (SSLENGTH ss)
  6.     (setq ent (ssname ss i))
  7.     (setq
  8.       TextList (append TextList (list (cdr (assoc 1 (entget ent)))))
  9.     )
  10.     (setq i (+ i 1))
  11.   )
  12. )
  13. ;;;Fill
  14. (defun Fill (entBlock Text tag / i okEnt subEnt)
  15.   (setq i 0)
  16.   (setq subEnt (entnext entBlock))
  17.   (setq tj t)
  18.   (while (and (/= NIL subEnt) tj)
  19.     (if        (= (cdr (assoc 0 (entget subEnt))) "ATTRIB")
  20.       (progn
  21.         (if (= (cdr (assoc 2 (entget subEnt))) tag)
  22.           (progn
  23.             (setq
  24.               okEnt (subst (cons 1 Text)
  25.                            (assoc 1 (entget subEnt))
  26.                            (entget subEnt)
  27.                     )
  28.             )
  29.             (entmod okEnt)
  30.             (entupd entBlock)
  31.             (setq tj nil)
  32.           )
  33.         )
  34.       )
  35.     )
  36.     (setq subEnt (entnext subEnt))
  37.   )
  38.   (princ)
  39. )
  40. ;;;end defun
  41. (Defun getList (entBlock dxf / slist Blockname AttEnt)
  42.   (setq slist (entget entBlock))
  43.   (SetQ        Blockname (Cdr (Assoc 2 slist))
  44.         slist          (TblSearch "BLOCK" Blockname)
  45.   )
  46.   (SetQ AttEnt (Cdr (Assoc -2 slist)))
  47.   (While AttEnt
  48.     (setq slist (entget AttEnt))
  49.     (if        (/= (cdr (assoc dxf slist)) nil)
  50.       (setq ReList (append ReList (list (cdr (assoc dxf slist)))))
  51.     )
  52.     (setq AttEnt (EntNext AttEnt))
  53.   )
  54.   (princ)
  55. )
  56. ;;;end defun

  57. (defun c:AttFill (/            ssBlock   j                jj          Block0
  58.                   u            entBlockList        TagList          ShowList
  59.                   v            TextList  ok        input          AttRefList
  60.                   ReList
  61.                  )
  62.   (setvar "CMDECHO" 0)
  63.   (command "undo" "begin")
  64.   (creatTextList)
  65.   (princ "\n请选择属性参照:")
  66.   (setq ssBlock (ssget '((0 . "INSERT"))))
  67.   (setq j 0)
  68.   (while (< j (sslength ssBlock))
  69.     (setq Block0 (ssname ssBlock j))
  70.     (setq entBlockList (append entBlockList (list Block0)))
  71.     (setq j (1+ j))
  72.   )
  73.   (setq jj 0)
  74.   (setq input 0)
  75.   (while (< jj (length entBlockList))
  76.     (getList (nth jj entBlockList) 2)
  77.     (setq TagList ReList)
  78.     (setq v 0
  79.           ShowList ""
  80.     )
  81.     (princ
  82.       (strcat "\n 所选的第" (itoa (+ 1 jj v)) "文字将填到: \n")
  83.     )
  84.     (repeat (length TagList)
  85.       (setq ShowList
  86.              (strcat ShowList
  87.                      (strcat (itoa v) "-" (nth v TagList) "  ")
  88.              )
  89.       )
  90.       (setq v (1+ v))
  91.     )
  92.     (setq ok (getint (strcat ShowList "   <" (itoa input) ">   ")))
  93.     (if        (= ok nil)
  94.       (setq ok input)
  95.       (setq input ok)
  96.     )
  97.     (if        (<= ok v)
  98.       (if (<= (+ jj 1) (length TextList))
  99.         (fill (nth jj entBlockList)
  100.               (nth jj TextList)
  101.               (nth ok TagList)
  102.         )
  103.         (setq jj (+ 1 (length entBlockList)))
  104.       )
  105.       (exit)
  106.     )
  107.     (setq TagList nil
  108.           ReList nil
  109.           AttRefList
  110.            nil
  111.     )
  112.     (setq jj (1+ jj))
  113.   )
  114.   (command "undo" "end")
  115.   (princ)
  116. )
发表于 2003-11-3 16:51:00 | 显示全部楼层
下列是圖塊屬性順序:你的程序只能填入第7項, 第9項無法填入
不要再想修改fill函數,從程序根本修改

所選的第1文字將填到:
0-零件號碼  1-A/0  2-頁次  3-材料規格  4-零件名稱  5-比例  6-繪圖者  7-12.12.12
8-設計者  9-12.12.12  10-參考備註     <0>   7

所選的第2文字將填到:
0-零件號碼  1-A/0  2-頁次  3-材料規格  4-零件名稱  5-比例  6-繪圖者  7-12.12.12
8-設計者  9-12.12.12  10-參考備註     <7>   9
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 05:33 , Processed in 0.163219 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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