明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2001|回复: 8

[原创]比较2个图形的所有系统变量,找到不同的值。

[复制链接]
发表于 2007-1-23 09:01:00 | 显示全部楼层 |阅读模式

    比较2个图形的所有系统变量,找到不同的值。

    我们在使用编程时,自己的图形没任何问题,可在别人的图中使用时就用会遇到好多莫名奇妙的问题,不知那里出错了。
我编的程序,从2个图的系统变量入手,找到不同值,有益于分析原因。

    系统变量的基本参数文件.txt 中共有382个系统变量,当然您还可以再往里加入新的变量(具体操作见文件内的说明)。
分两部:
第一步,JLxitong.LSP 根据所选的同一个“系统变量的基本参数文件.txt”,分别建立两个要比较的系统变量文件;
第二步,bijiao.LS P根据两个系统变量文件进行比较,并把结果存入新文件中。

   当然每个系统变量代表的含义,还需要您自己查参考书。

JLxitong.LSP:

;;;;;;;;;;;在AutoCAD 2004 版以上版本运行
;;;功能:取出CAD图中的所有系统变量
(Defun C:JLxitong (/ dir  f name fname textal fnn  fn a1www  cmd88 fila fnnn  aw11)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;来源dwj88.lsp
(setq  dir (getvar "dwgprefix"))
;(setq cmd (getvar "cmdecho"))
   (setvar "cmdecho" 0)
  (setq f (getfiled "选择一个系统变量的基本参数文件" "E:\\cadaa\\cx\\" "" 8));系统变量的基本参数文件.txt
          (setq f(findfile f))
;;
(while (or (= (setq name (getstring "请输入新生成的系统变量文件名<自动加上后缀.txt>:")) "")
      (findfile (strcat name ".txt"))
  )
  )
    (setq fname (strcat dir name ".txt"))
    (setq textal(strcat "您准备生成一个文件作为系统变量数据文件: " fname
  "\n"
  "\n" "文件中每行加入了括号()"
  ))
 (Alert textal)
;;
          (SetQ  aw11 0)
          (SetQ  fn (Open f "r") )
          (SetQ  fnn (Open fname "w") )
(while (/= (SetQ a1www (Read-Line fn)) !END )
   ;(SetQ a1www (Read-Line faa))
(if (and (/= a1www "")    (/= a1www " "))  
  (progn
  (if (or
      (and (>= (vl-string-elt a1www 0) (ascii "A") )
    (<= (vl-string-elt a1www 0) (ascii "Z") ) )
      (and (>= (vl-string-elt a1www 0) (ascii "a") )
    (<= (vl-string-elt a1www 0) (ascii "z") ) )
    );end or
    (progn
     (setq  a1www(vl-string-right-trim " " a1www))
     (setq cmd88 (getvar a1www))
     (setq cmd88 (vl-princ-to-string cmd88))
     (setq fila (strcat "(" a1www  "   " cmd88 ")"  ) )
     (SetQ  fnnn (write-line fila  fnn )) ;
     (SetQ  aw11 (+  aw11 1))
    );end progn
    )  ;end if
  );end progn
 )  ;end if
);end while
 (Close fn)
(Close fnn)
  (setq  aw11 (itoa aw11))
 

(setq textal(strcat  "您参照的系统变量的基本参数文件: "
  "\n"   f
  "\n"     
  "\n" "您已经生成一个文件作为系统变量数据文件: "
  "\n" fname    
  "\n" "(文件中每行加入了括号,每行一个系统变量)"
  "\n"      
  "\n" "由JLxitong.lsp程序建立的文件"name"中共有:  " aw11 " 个系统变量"      
      
  ))
 (Alert textal)
(princ "\n END JLxitong.lsp" )
  (princ  "\n ")
  );end

bijiao.LSP:

;;;;;;;;;;;在autocad 2004 版以上版本运行
;;功能:比较2个系统变量文件,这2个系统变量文件,必须由同一个系统变量的基本参数文件生成的。

(Defun C:biJiao (/ dir  f ff name fname textal fnn  fn ffn a1www  cmd88 fila fnnn
                 a1w a1w1 a2w a2w2 ss1 s001  sss1  sssaa1
     ss2 s002 sss2 sssaa2
                 a1waa aw11
  
   )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;来源dwj88.lsp
(setq  dir (getvar "dwgprefix"))
;(setq cmd (getvar "cmdecho"))
   (setvar "cmdecho" 0)
(setq f (getfiled "选择第一个文件(由JLxitong.lsp程序生成的文件)" "" "" 8))
          (setq f(findfile f))
(setq fn (open f "r"))
 
(setq ff (getfiled (strcat  "您选择第一个文件是" f
                             "   "
                             "请选择第二个文件:"
      ) f "" 8))


 
          (setq ff(findfile ff))
(setq ffn (open ff "r"))
;;
(while (or (= (setq name (getstring "请输入比较系统变量文件后,所得结果的文件名<自动加上后缀.txt>:")) "")
      (findfile (strcat name ".txt"))
  )
  )
    (setq fname (strcat dir name ".txt"))
    (setq textal(strcat "您已经选好一个文件作为系统变量数据文件: " fname
  "\n"
  "\n" "文件中每行加入了括号()"
  ))
 (Alert textal)
;;
  (SetQ  aw11 0)
(SetQ  fnn (Open fname "w") )

 (setq fila  "下面是两个文件中不一样的系统变量值"        )
  (SetQ  fnnn (write-line fila  fnn )) ;
 (setq fila (strcat  f  "系统变量值:"  "             "    ff      "系统变量值:"       ) )
 (SetQ  fnnn (write-line fila  fnn )) ;
  (setq fila " ")
  (SetQ  fnnn (write-line fila  fnn )) ;
  (SetQ  fnnn (write-line fila  fnn )) ;
;(setq fila (strcat "(" a1www  "   " cmd88 ")"  ) )
    ;(SetQ  fnnn (write-line fila  fnn )) ;
(while
(progn(SetQ a1w1 (Read-Line fn)) (and (/= a1w1 nil) (/= a1w1 "")(/= a1w1 " ") )  )
 
 ;(SetQ a1w1 (Read-Line fn))
 (SetQ a2w2 (Read-Line ffn))
 
(setq a1w(vl-string->list  a1w1))
(setq a2w(vl-string->list  a2w2))
 ;;;
(progn
  (setq ss1(length a1w))
  (setq s001 0  )
  (setq sss1 0  )
(repeat ss1
     (setq sss01 (nth s001   a1w))
    (setq sss1 (+ sss1 sss01))
   (setq s001 (+ s001 1) )
   )
(setq sssaa1 sss1)
);end progn
(progn
  (setq ss2(length a2w))
  (setq s002 0  )
  (setq sss2 0  )
(repeat ss2
     (setq sss02 (nth s002   a2w))
    (setq sss2 (+ sss2 sss02))
   (setq s002 (+ s002 1) )
   )
(setq sssaa2 sss2)
);end progn
;;;
 (if (/= sssaa1 sssaa2 )
   (progn
    (cond ((>= (length a1w) 40)
           (progn
      (setq fila (strcat  a1w1  "        " a2w2   ) )
             (SetQ  fnnn (write-line fila  fnn )) ;
           );enf progn
   )
          ((< (length a1w) 40)
    (progn
            (setq a1waa (substr "                                        " (+ (length a1w) 1)  (- 40 (length a1w))  ))
            (setq fila (strcat  a1w1  a1waa a2w2   ) )
            (SetQ  fnnn (write-line fila  fnn )) ;
    );enf progn
   )  
    );end cond
    (SetQ  aw11 (+  aw11 1))
  
   );end progn
  
  );enf if

);end while

(Close fn)(Close ffn)(Close fnn)
(setq  aw11 (itoa aw11))
(setq textal(strcat  "您选择的第一个文件是: "
  "\n"   f
  "\n" "您选择的第二个文件是:"
  "\n" ff
  "\n"      
  "\n" "您已经生成一个文件作为系统变量数据文件经比较后所得到的信息文件: "
  "\n" fname    
  "\n" "(每行一个系统变量)"
  "\n"      
  "\n" "由biJiao.lsp程序建立的文件"name"中共有:  " aw11 " 个系统变量不同"      
      
  ))
 (Alert textal)
(princ "\n END biJiao.lsp" )
  (princ  "\n ")
  );end

本帖子中包含更多资源

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

x
发表于 2007-1-27 11:15:00 | 显示全部楼层
下载来好好学习!谢谢!
发表于 2007-1-27 18:54:00 | 显示全部楼层

这个想法倒还真的不错

发表于 2007-1-27 18:56:00 | 显示全部楼层

不错,对偶有很好的启发作用。

谢楼主分享

发表于 2008-8-14 10:01:00 | 显示全部楼层
好东西。。。
发表于 2008-8-14 10:12:00 | 显示全部楼层
有没有办法写出像ET里面的 sysvdlg 命令一样的程序
发表于 2008-8-15 09:13:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-4-8 20:43:18 | 显示全部楼层
多谢楼主分享,学习~~~~
发表于 2014-4-14 17:41:09 来自手机 | 显示全部楼层
回复一个,做个记号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 23:36 , Processed in 0.364678 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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