找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 919|回复: 4

[编程申请]:申请编辑这样一个文字查找程序

[复制链接]
发表于 2005-3-16 23:11:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
pkpm出的配筋信息wpj1.dwg文件中
计算显示的箍筋值表示为比如G0.4-0.4
申请编辑这样一个程序,框选配筋的数字,搜索到配箍比如大于0.4(这个数字最好可以自己定义)的粱,并显示其位置
相当于cad2002中find命令
只是更加有针对性的查找大于某一个配筋值,并能全部选择
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 11288个

财富等级: 富甲天下

发表于 2005-3-17 14:36:25 | 显示全部楼层
请楼主给一个DWG文件的例子,不然无法编程调试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-30 20:33:06 | 显示全部楼层
试试这个能用吗?
;TIP    :  ZOOM2TXT.LSP (C)1993, Jeffrey R. Foster, Jr.
(defun c:zoom2txt (/ chgtxt zoompt1 zoompt2 sstxt sstxtlen txtent1 txtins dwgscal
                     pt1 pt3 num embed zoomnext txtent1 txtstyl txtlay txtinspt
                     txt_elev txt_height txt_rotate txt_obliq txt_width txt_color
                     txt_2_chg txt_chg)
  (setq txt (getstring T "\nEnter text string to zoom to(请输入需要查找的字串): "))
  (initget 1 "Y N")
  (setq embed (getkword "\nSearch for embedded strings(寻找包含此字串的字符吗)? <Y or N>: "))
  (if (= embed "Y")
    (setq txt (strcat "*" txt "*"))
  )
  (setq zoompt1 (getvar "extmin"))
  (setq zoompt2 (getvar "extmax"))
  (setq search_list
    (list
      (cons 0 "text")
      (cons 1 txt)
    )
  )
  (if (/= (setq sstxt (ssget "X" search_list)) nil)
    (progn
      (setq sstxtlen (sslength sstxt))
      (alert (strcat "\nThere are(有) " (itoa sstxtlen) " text entities meeting your criteria(字符串符合您的条件)"))
      (setq
        txtent1 (entget (ssname sstxt 0))
        txtins (cdr (assoc '10 txtent1))
        dwgscal (getvar "ltscale")
        pt1 (list (- (car txtins) (* 1.0 dwgscal))
                  (- (cadr txtins) (* 1.0 dwgscal))
            )
        pt3 (list (+ (car txtins) (* 1.0 dwgscal))
                  (+ (cadr txtins) (* 1.0 dwgscal))
            )
      )
      (command "_zoom" "w" pt1 pt3)
      (initget 1 "T P N")
      (setq chgtxt (getkword "\nEdit Text, text Properties or Neither? <T P N>: "))
      (cond ((= chgtxt "T") (command "_ddedit" (ssname sstxt 0) ""))
            ((= chgtxt "P") (txt_prop))
            ((= chgtxt "N") (setq num 1))
      )
      (setq num 1)
      (if (> sstxtlen 1)
        (progn
          (initget 1 "Y N")
          (while (and (/= (setq zoomnext (getkword "\nZoom to next string? <Y or N>: ")) "N") (< num sstxtlen))
            (ssdel (ssname sstxt 0) sstxt)
            (setq
              txtent1 (entget (ssname sstxt 0))
              txtins (cdr (assoc '10 txtent1))
              dwgscal (getvar "ltscale")
              pt1 (list (- (car txtins) (* 1.0 dwgscal))
                        (- (cadr txtins) (* 1.0 dwgscal))
                  )
              pt3 (list (+ (car txtins) (* 1.0 dwgscal))
                        (+ (cadr txtins) (* 1.0 dwgscal))
                  )
            )
            (command "_zoom" "w" pt1 pt3)
            (initget 1 "T P N")
            (setq chgtxt (getkword "\nEdit Text, text Properties or Neither? <T P N>: "))
            (cond ((= chgtxt "T") (command "_ddedit" (ssname sstxt 0) ""))
                  ((= chgtxt "P") (txt_prop))
                  ((= chgtxt "N") (setq num 1))
            )
            (setq num (+ num 1))
            (initget 1 "Y N")
          )
        )
      )
      (command "_zoom" zoompt1 zoompt2)
    )
    (alert (strcat "\nThe text string ,"txt", does not exist in this drawing...  Sorry!!!"))
  )
)

(Defun txt_prop ()
  (setq
    txt_styl (cdr (assoc '7 (entget (ssname sstxt 0))))
    txt_lay (cdr (assoc '8 (entget (ssname sstxt 0))))
    txt_inspt (cdr (assoc '10 (entget (ssname sstxt 0))))
    txt_elev (cdr (assoc '38 (entget (ssname sstxt 0))))
    txt_height (cdr (assoc '40 (entget (ssname sstxt 0))))
    txt_width (cdr (assoc '41 (entget (ssname sstxt 0))))
    txt_rotate (cdr (assoc '50 (entget (ssname sstxt 0))))
    txt_obliq (cdr (assoc '51 (entget (ssname sstxt 0))))
    txt_color (cdr (assoc '62 (entget (ssname sstxt 0))))
  )
  (prompt (strcat "\nCurrent text Style is :           " txt_styl))
  (prompt (strcat "\nCurrent text Layer is :           " txt_lay))
  (prompt (strcat "\nCurrent text Insertion point:     "
                  (if (< (car txt_inspt) 0.0)
                    (strcat "-" (rtos (abs (car txt_inspt)) 2 4))
                    (rtos (car txt_inspt) 2 4)
                  )
                  ","
                  (if (< (cadr txt_inspt) 0.0)
                    (strcat "-" (rtos (abs (cadr txt_inspt)) 2 4))
                    (rtos (cadr txt_inspt) 2 4)
                  )
                  ","
                  (if (< (nth 2 txt_inspt) 0.0)
                    (strcat "-" (rtos (abs (nth 2 txt_inspt)) 2 4))
                    (rtos (nth 2 txt_inspt) 2 4)
                  )
          )
  )
  (if (/= txt_elev nil)
    (prompt (strcat "\nCurrent text Elevation is :       " (rtos txt_elev 2 4)))
    (prompt "\nCurrent text elevation is :       0")
  )
  (prompt (strcat "\nCurrent text Height is :          " (rtos txt_height 2 4)))
  (prompt (strcat "\nCurrent text Width is :           " (rtos txt_width 2 4)))
  (prompt (strcat "\nCurrent text Rotation angle is :  " (rtos txt_rotate 2 4)))
  (prompt (strcat "\nCurrent text Obliquing angle is : " (rtos txt_obliq 2 4)))
  (if (/= txt_color nil)
    (prompt (strcat "\nCurrent text Color is :           " (rtos txt_color 2 4)))
    (prompt "\nCurrent text color is :           Bylayer")
  )
  (setq txt_2_chg 1)
  (while (/= txt_2_chg "Q")
  (initget "S L I E H W R O C Q")
  (setq txt_2_chg (getkword "\nChange which property -
            Style,Layer,Insertion point,Elev,Height,Width,Rotation,Oblique angle,Color, or Quit: "))  
  (cond
    ((= txt_2_chg "S")
       (command "style" "?" "*")
       (setq txt_styl (getstring "\nWhich text style do you wish to use? : "))
       (txt_2_make)
    )
    ((= txt_2_chg "L")
       (alert "\nLook for the layer you wish")
       (command "_ddlmodes")
       (setq txt_lay (getstring "\nWhich text layer do you wish to use? : "))
       (txt_2_make)
    )
    ((= txt_2_chg "I")
       (setq txt_inspt (getpoint "\nPick new text insertion point: "))
       (txt_2_make)
    )
    ((= txt_2_chg "E")
       (setq txt_elev (getreal "\nEnter the text elevation you wish to use: "))
       (txt_2_make)
    )
    ((= txt_2_chg "H")
       (setq txt_height (getreal "\nEnter the text height you wish to use: "))
       (txt_2_make)
    )
    ((= txt_2_chg "W")
       (setq txt_width (getreal "\nEnter the text width you wish to use: "))
       (txt_2_make)
    )
    ((= txt_2_chg "R")
       (setq txt_rotate (getangle "\nEnter or pick the text rotation you wish to use: "))
       (txt_2_make)
    )
    ((= txt_2_chg "O")
       (setq txt_obliq (* (/ (getreal "\nEnter the text obliquing angle you wish to use: ") 180.0) PI))
       (txt_2_make)
    )
    ((= txt_2_chg "C")
       (setq txt_color (getreal "\nEnter the number for the text color you wish to use: "))
       (txt_2_make)
    )
  )
  )
)

(defun txt_2_make ()
  (setq txt_chg (entget (ssname sstxt 0)))
  (setq txt_chg (subst (cons 7 txt_styl) (assoc 7 txt_chg) txt_chg))
  (entmod txt_chg)
  (setq txt_chg (entget (ssname sstxt 0)))
  (setq txt_chg (subst (cons 8 txt_lay) (assoc 8 txt_chg) txt_chg))
  (entmod txt_chg)
  (setq txt_chg (entget (ssname sstxt 0)))
  (setq txt_chg (subst (cons 10 txt_inspt) (assoc 10 txt_chg) txt_chg))
  (entmod txt_chg)
  (if (/= txt_elev nil)
    (progn
      (setq txt_chg (entget (ssname sstxt 0)))
      (setq txt_chg (subst (cons 38 txt_elev) (assoc 38 txt_chg) txt_chg))
      (entmod txt_chg)
    )
  )
  (setq txt_chg (entget (ssname sstxt 0)))
  (setq txt_chg (subst (cons 40 txt_height) (assoc 40 txt_chg) txt_chg))
  (entmod txt_chg)
  (setq txt_chg (entget (ssname sstxt 0)))
  (setq txt_chg (subst (cons 41 txt_width) (assoc 41 txt_chg) txt_chg))
  (entmod txt_chg)
  (setq txt_chg (entget (ssname sstxt 0)))
  (setq txt_chg (subst (cons 50 txt_rotate) (assoc 50 txt_chg) txt_chg))
  (entmod txt_chg)
  (setq txt_chg (entget (ssname sstxt 0)))
  (setq txt_chg (subst (cons 51 txt_obliq) (assoc 51 txt_chg) txt_chg))
  (entmod txt_chg)
  (if (/= txt_color nil)
    (progn
      (setq txt_chg (entget (ssname sstxt 0)))
      (setq txt_chg (subst (cons 62 txt_color) (assoc 62 txt_color) txt_chg))
      (entmod txt_chg)
    )
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-7 10:38:09 | 显示全部楼层
前人栽树,后人乘凉,非常感谢,我得好好琢磨!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-5-6 16:43:21 | 显示全部楼层
其实配箍筋好象没这么费颈吧,搂两眼就知道配%%1318@200还是%%13010@100/200了吧,实在不用楼上的那段代码,要不我到可以给你编一段,只是觉得没必要。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-22 10:34 , Processed in 0.490687 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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