明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: iceberg2509

[资源] 无聊发布CAD版本转换以及去除教育版戳记程序源代码

    [复制链接]
发表于 2012-7-28 20:57:10 | 显示全部楼层
给力的就U要顶下楼主
发表于 2012-7-30 12:21:50 | 显示全部楼层
楼主用了什么函数,为什么不支持04版呢?如果能支持04版就太好了。
发表于 2012-8-6 16:34:56 | 显示全部楼层
elitefish的微博
发表于 2012-8-13 22:26:52 | 显示全部楼层
不错,对版本转换有兴趣
发表于 2012-8-15 00:54:30 | 显示全部楼层
本帖最后由 chlh_jd 于 2012-8-15 01:01 编辑

这个还是比较给力的!
缺少AddSeprate函数,getmutifiles不支持64位系统的,可以用下面这个
  1. (setq *Is64Bit* (wcmatch (getvar "platform") "*64*"));;; 修改依据: xiaomu 2005-10-12
  2. ;;;****************************************************************************
  3. ;;; No.5-3    Windows多文件选择(适用于CADR15以上) 函数                        
  4. ;;; 说明: 本函数使用MsComDlg.Commondialog对象(Comdlg.OCX)                     
  5. ;;; 调用: (ayGetMultFiles "多选文件" "图形文件(*.dwg)|*.dwg|所有(*.*)|*.*" "")
  6. ;;;       (ayGetMultFiles ""  "" "E:\\厦门维高\\办公楼\")
  7. ;;; 返回: ("C:\\DWG" "7b.dwg" "7c.dwg" "1.Dwg")                                
  8. ;;;****************************************************************************;;; Edited by GSLS(SS) 2012-05-06
  9. (if
  10.   (/=
  11.     (vl-registry-read
  12.       "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905"
  13.     )
  14.     "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"
  15.   )
  16.    (vl-registry-write
  17.      "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905"
  18.      ""
  19.      "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"
  20.    )
  21. )
  22. (defun ayGetMultFiles (strTitle    strFilter  strInitDir  /
  23.            Maxfiles    Flags       WinDlg  mFiles
  24.            Catchit b
  25.           )
  26.   (vl-load-com) ;_(setq strTitle "多选文件" strFilter "图形文件(*.dwg)|*.dwg|所有(*.*)|*.*" strInitDir "")
  27.   (if *Is64Bit*
  28.     ;_Edited By GSLS(SS) 2012.12.04 , refer http://www.theswamp.org/index.php?topic=17672.0
  29.     (progn
  30.       (setq
  31.   Catchit  (vl-catch-all-apply
  32.       (function dcl_MultiFileDialog)
  33.       (list
  34.         (list strfilter)
  35.         strTitle
  36.         strInitDir
  37.       )
  38.     )
  39.       )
  40.       (if (not (vl-catch-all-error-p Catchit)) ;处理"取消"错误.
  41.   (progn
  42.     (setq strInitDir (vl-string-right-trim (last (string->strlst (car Catchit) "\")) (car Catchit)))
  43.     (foreach a Catchit
  44.       (setq b (vl-string-subst "" strInitDir a))
  45.       (setq mFiles (cons b mFiles))
  46.       )
  47.     (cons (vl-string-right-trim "\" strinitdir) (reverse mfiles))
  48.     )
  49.   nil        ;else
  50.       )
  51.     )
  52.     (progn
  53.       (setq WinDlg (vlax-create-object "MSComDlg.CommonDialog"))
  54.       (if (not WinDlg)
  55.   (progn        ;then
  56.     (princ
  57.       "\n【错误】系统中未安装通用控件Comdlg.OCX, 请安装后再运行!"
  58.     )
  59.     (setq mFiles nil)
  60.   )        ;end_progn then
  61.   (progn        ;else
  62.     (setq Maxfiles 32767)
  63.     (setq Flags (+ 4 512 524288 1048576 1024))
  64.     (vlax-put-property WinDlg (quote CancelError) :vlax-true)
  65.     (vlax-put-property WinDlg (quote MaxFileSize) Maxfiles)
  66.     (vlax-put-property WinDlg (quote Flags) Flags)
  67.     (vlax-put-property WinDlg (quote DialogTitle) strTitle)
  68.     (vlax-put-property WinDlg (quote Filter) strFilter)
  69.     (vlax-put-property WinDlg (quote InitDir) strInitDir)
  70.     (setq Catchit nil)
  71.     (setq
  72.       Catchit (vl-catch-all-apply
  73.           (function
  74.       (lambda  ()
  75.         (vlax-invoke-method WinDlg 'ShowOpen)
  76.         (setq mFiles (vlax-get WinDlg 'Filename))
  77.       )
  78.           )
  79.         )
  80.     )
  81.     (vlax-release-object WinDlg)
  82.     (if (not (vl-catch-all-error-p Catchit)) ;处理"取消"错误.
  83.       (ayFSTR->LST mFiles)
  84.       nil        ;else
  85.     )        ;end_if
  86.   )        ;end_progn
  87.       )          ;end_if
  88.     )
  89.   );end_if
  90. );end_defun
  91. ;;;************************************************
  92. ;;; No.5-3-1 处理Windows多文件选择返回值 函数      
  93. ;;; 说明: 将"C:\\DWG1\0001.dwg\0002.dwg" 处理成:   
  94. ;;;        ("C:\\DWG1" "1.dwg" "2.dwg") 表形式.   
  95. ;;;************************************************
  96. (Defun ayFSTR->LST (xMFileStr / mFileList k)
  97.   (if (= xMFileStr "")
  98.     (setq mFileList nil)    ;then
  99.     (progn
  100.       (if (vl-string-position (ascii "\000") xMFileStr)
  101.   (progn
  102.     (while (vl-string-position (ascii "\000") xMFileStr)
  103.       (setq k (vl-string-position (ascii "\000") xMFileStr))
  104.       (setq mFileList
  105.        (append mFileList (list (substr xMFileStr 1 k)))
  106.       )
  107.       (setq xMFileStr (substr xMFileStr
  108.             (+ k 2)
  109.             (- (strlen xMFileStr) k 1)
  110.           )
  111.       )
  112.     )        ;end_while
  113.     (setq  mFileList
  114.      (append mFileList
  115.        (list (vl-string-left-trim "\" xMFileStr))
  116.      )
  117.     )
  118.   )        ;end_progn then
  119.   (progn
  120.     (setq mFileList (vl-filename-directory xMFileStr))
  121.     (setq
  122.       mFileList (list mFileList
  123.           (vl-string-left-trim
  124.             "\"
  125.             (vl-string-subst "" mFileList xMFileStr)
  126.           )
  127.           )
  128.     )
  129.   )        ;end_progn else
  130.       )          ;end_if
  131.       mFileList
  132.     )          ;end_progn
  133.   )          ;end_if
  134. )          ;end_defun

未见AddSeprate 函数,猜想应该是这样的
  1. (defun AddSeprate (lst del)
  2.   (apply 'strcat (mapcar (function (lambda (x)(strcat del x)))lst)))

ACAD2011下遇到错误:执行环境无效,
  1. ;;错误语句:
  2. (vla-open (vla-get-documents AcadApp) DwgName)
复制代码

发表于 2012-8-15 12:14:01 | 显示全部楼层
顶你了楼主,版本转换对于用低版本CAD软件非常实用,主要是现在的高版本软件使用越来越慢了,
不过请问楼主我的WIN7 32位系统cad 2006中出现两个问题:
1、添加文件夹的时候出现“命令:
DWGCONVERTER

错误:Automation 错误。

命令:
命令:  DWGCONVERTER
命令:
命令: 错误:Automation 未知命令“错误:AUTOMATION”。按 F1 查看帮助。”
2、添加文件
直接出现:
当前系统无MSComDlg.CommonDialog对象!

请问楼主这个怎么解决啊
很想要此插件,谢谢
发表于 2012-9-20 17:36:52 | 显示全部楼层
xiaoyingzi 发表于 2011-10-21 09:46
太好了,有源码,希望楼主经常无聊下
修改成支持autocad2004~2010

no function definition: MAKELIST
是不是还缺makelist函数呢

我也是同样的问题,查看了下源代码,似乎还缺少makelist函数。麻烦您能再完善下吗?
发表于 2012-9-22 21:40:53 | 显示全部楼层
在CAD2006试了一下,把2004版本转成2010,感觉没变化。
发表于 2012-9-24 11:51:14 | 显示全部楼层
这个与Eps有什么区别呢!!!
发表于 2012-9-24 18:05:16 | 显示全部楼层
chlh_jd 发表于 2012-8-15 00:54
这个还是比较给力的!
缺少AddSeprate函数,getmutifiles不支持64位系统的,可以用下面这个

(setq  Catchit  (vl-catch-all-apply
      (function dcl_MultiFileDialog)
      (list  (list strfilter)  strTitle  strInitDir  )
    )
请问这句什么意思,是不是缺少dcl_MultiFileDialog函数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 00:44 , Processed in 0.257140 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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