明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: caoyin

【分享明经——发程序、拜新年专贴】

    [复制链接]
发表于 2008-12-6 22:40:00 | 显示全部楼层
唉,多谢caoyin抬举,先留空位,有能拿出来的尽量咯
发表于 2008-12-6 22:52:00 | 显示全部楼层

记得原来帮过别人改了一个“自动编号”的程序,自己感觉还算有点用,不过这种程序网络上太多:

功能:自动编号,可以加前缀、后缀,自定增加减少的序数(不关闭cad前提下可记忆前后缀)

 (defun c:bh (/ oce1 n1 zn h1 sxh1 p1)
(vl-load-com)
(setq oce1 (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq ms (vla-get-modelspace
(vla-get-activedocument (vlax-get-acad-object))
)
)
(if qz
()
(setq qz "")
)
(if hz
()
(setq hz "")
)
(initget "c")
(setq nqz (getstring (strcat "\n请输入前缀相同的部分<" qz ">/c(为空): " )))
(cond
((= nqz "c") (setq qz ""))
(T (if (/= nqz "")(setq qz nqz)))
)
(setq nhz (getstring (strcat "\n请输入后缀相同的部分<" hz ">/c(为空): " )))
(cond
((= nhz "c") (setq hz ""))
(T (if (/= nhz "")(setq hz nhz)))
)
(if (not (setq n1 (getint "\n请输入起始顺序号 <1>: ")))
(setq n1 1)
)
(if (not (setq zn (getint "\n请输入增加或减少的序数 <+1>: ")))
(setq zn 1)
)
(if (not (setq h1 (getreal "\n请指定文字高度 <2.5>: ")))
(setq h1 2.5)
)
(setq sxh1 (strcat qz (xd-string_zeropad n1 3 "0" 0) hz))
(setq p1 (getpoint "\n请指定插入点: "))
(while (/= p1 nil)
(setq p1 (vlax-3d-point p1))
(setq txt (vla-addtext
ms
sxh1
p1
h1
)
)

(setq
n1 (+ n1 zn)
sxh1 (strcat qz (xd-string_zeropad n1 3 "0" 0) hz)
p1 (getpoint "\n请指定下一插入点: ")
)

)
(setvar "cmdecho" oce1)
(vlax-release-object ms)
(princ)
)


;; Form www.xdcad.net eachy 2005.9.21
;|
功 能 用指定字符首位补位格式化数字
参 数 intVal:要补位的数。;
Pad: 代表添加字符形成的数值的位数
sp 补位字符;
str 小数位数
示 例 (xd-stringZeroPad 123 4 "0" 0)
注 意 以上示例将返回“0123”。
_$ (XD-STRING_ZEROPAD 123 8 " " 2)
" 123.00"
_$ (XD-STRING_ZEROPAD 123 8 "A" 2)
"AA123.00"
|;
(defun xd-string_zeropad (intval pad sp str / zeros)
(setvar "dimzin" 0)
(strcat
(apply 'strcat
(repeat (- pad (strlen (rtos intval 2 str)))
(setq zeros (cons sp zeros)) ; make list
)
)
(rtos intval 2 str)
)
)

评分

参与人数 1明经币 +2 收起 理由
mccad + 2 【好评】 【分享明经——发程序、拜新年

查看全部评分

发表于 2008-12-6 22:52:00 | 显示全部楼层
本帖最后由 作者 于 2008-12-6 22:56:26 编辑

caoyin都这么说了,不发点东西,真不好意思。

来个经典的。今天重写。

;;;writenn by carrot1983 2008-12-06
(defun c:cd (/ e elist i newstring pt1 pt2)
  (command "._undo" "_begin")
  (princ "\n功能: 纯数字递增复制")
  (if (and (setq e (car (entsel "\n选择纯数字 <退出>: ")))
    (if (setq i (getint "\n输入增值 <1>: ")) t (setq i 1))
    (setq pt1 (getpoint "\n指定第一点 <退出>: "))
      )
    (while (setq pt2 (getpoint pt1 "\n下一点 <退出>: "))
      (setq elist (entget e))
      (setq newstring (itoa (+ (read (cdr (assoc 1 elist))) i))) ;_递增
      (entmake (subst (cons 1 newstring)
        (assoc 1 elist)
        elist
        )
      )
      (setq e (entlast))
      (command "._move" e "" "none" pt1 "none" pt2)
      (setq pt1 pt2)
    )
  )
  (command "._undo" "_end")
  (princ)
)

评分

参与人数 1明经币 +2 收起 理由
mccad + 2 【好评】 【分享明经——发程序、拜新年

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2008-12-6 22:54:00 | 显示全部楼层
本帖最后由 作者 于 2008-12-6 23:03:31 编辑

高手这么多,很多程序怕拿不出手。。。

程序就扔在这里啦:

http://carrot1983.ys168.com/ 

发表于 2008-12-8 11:25:00 | 显示全部楼层
本帖最后由 作者 于 2008-12-8 11:55:33 编辑

;;剪切板内容查看和设置

;;by nonsmall @ mjtd

(setq ob (vlax-create-object "htmlfile"))

;读取内容
(vba "ob.ParentWindow.ClipboardData.GetData(\"text\")"))

;设置内容为字符串123

(vba "ob.ParentWindow.ClipboardData.SetData(\"Text\",\"123\")")

===========================

VB原型:

Set obj = CreateObject("htmlfile")
ClipboardText=obj.ParentWindow.ClipboardData.GetData("text")
MsgBox ClipboardText

===========================

测试:

获取EXCEL复制一行的内容

命令: (setq ob (vlax-create-object "htmlfile"))
#<VLA-OBJECT DispHTMLDocument 06e0cac8>
命令: (vlax-variant-value (vba "ob.ParentWindow.ClipboardData.GetData(\"text\")"))
"1\t1\t1\t1\t1\t1\t1\t1\t1\r\n"

上面VBA函数原型http://bbs.mjtd.com/forum.php?mod=viewthread&tid=72391

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
mccad + 1 【好评】 【分享明经——发程序、拜新年

查看全部评分

发表于 2008-12-8 21:45:00 | 显示全部楼层

发布一个字符串转表的程式,写的不好,请大家批评指导.

新年也快要到了,先给大家拜早年了.

 

祝愿各位明经同仁天天快乐 ...

 

祝愿明经人气更上新台阶、旺、旺、旺...

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
mccad + 1 【好评】 【分享明经——发程序、拜新年

查看全部评分

发表于 2008-12-10 10:17:00 | 显示全部楼层

衷心感谢

www.mjtd.com

这里是CAD知识的海洋,是中国工程的的CAD之家。

 楼主| 发表于 2008-12-10 13:03:00 | 显示全部楼层
感谢各位的支持
发表于 2008-12-10 16:37:00 | 显示全部楼层
俺的程序下载率好高呀,
发表于 2008-12-13 16:32:00 | 显示全部楼层
本帖最后由 作者 于 2008-12-13 17:38:29 编辑

最近工作比较忙,没怎么写程序了。发个以前的,没怎么测试。技巧和难度不大,但愿可以为大家节省点时间罢了
  1. ;| xapp 生成activex实体--------by lxx.2008.3
  2. 这是一个集成的生成activex实体的函数,不必再一个个去找了.
  3. 测试:
  4. (setq a (xapp "doc"))
  5. (setq b (xapp "HTML"))
  6. (setq b (xapp "MSG"))
  7. (xapp (setq nam "WORD.DOC"))
  8. (setq ps (xapp "PHOTOSHOP"))
  9. (vlax-dump-object ps)
  10. (vla-get-name (vla-get-ActiveDocument ps)) -> "aaa"
  11. |;
  12. (defun xapp (nam /); 全局变量: (*APPLST)
  13.   (if (setq  obj (cdr(assoc (strcase nam) *applst)))
  14.      (vlax-get-or-create-object obj)
  15.   )
  16. )
  17. ;;;(vlax-get-or-create-object  ".NET Framework")
  18. (setq *applst '(("REGEXP" . "VBScript.RegExp");; 正则表达式
  19.   ("DBX" . "ObjectDBX.AxDbDocument") ;; CAD的activex接口
  20.   ("SHELL" . "Shell.Application");; WINDOWS SHELL
  21.   ;; vbs
  22.   ("FSO" . "Scripting.FileSystemObject")
  23.   ("SCR" . "ScriptControl")
  24.   ("WSC.SH" . "wscript.shell")
  25.   ("WSC.NET" . "wscript.Network")
  26.   ;; xml,word,excell,acess,ie,html
  27.   ("XML" . "Microsoft.XMLHTTP")
  28.   ("XML.DOC" . "MSXML2.DOMDocument")
  29.   ("EXCEL" . "Excel.Application")
  30.   ("EXCEL.SHEET" . "Excel.Sheet")
  31.   ("WORD" . "Word.application")
  32.   ("WORD.DOC" . "Word.Document")
  33.   ("ACESS" . "Access.Application")
  34.   ("IE" . "Internetexplorer.application")
  35.   ("HTML" . "htmlfile")
  36.                 ;;
  37.   ("PHOTOSHOP" . "PhotoShop.Application")
  38.   ("WBEM" . "wbemScripting.SwbemLocator")
  39.   ("ADO.CON" . "ADODB.Connection")
  40.   ("ADO.STM" . "ADODB.Stream")
  41.   ("ADO.REC" . "wADODB.Recordset")
  42.   ("CAO" . "CAO.DbConnect")
  43.   ;; ms app
  44.   ("SAPI" . "Sapi.SpVoice")
  45.                 ("AGENT" . "Agent.Control");;让默林来帮你说话
  46.   ("COMDLG" . "mscomdlg.commondialog") ;; windows file select dialog
  47.   ("MSN" . "MSNMessenger.MessengerApp") ;; msn
  48.   ("WMP" . "WMPlayer.OCX");Windows Media Player:
  49.         ("PRN" . "WinPrint.WinPrintX");;WinPrint :
  50.   ("MSG" . "Messenger.UIAutomation.1")
  51.   ("D2" . "System.Drawing.Drawing2D")
  52.         )
  53. )
  54. ;| ===============参考资料==================
  55. (vlax-get-or-create-object prog-id)
  56. 创建NOTEPAD对象实例。
  57. 但可以通过获取程序句柄,用windows API的 SENDKEY的方法操作。
  58. 方法一:
  59. 从HKEY_CLASSES_ROOT\\开始 这个方法根据应用程序所能打开的文档类型判断。
  60.    比如 WINWORD.EXE 关联了 *.DOC 文件, 那么打开 HKEY_CLASSES_ROOT\\ .DOC 键  它默认值为Word.Document.8
  61. Content Type: application/msword
  62. 注册表信息说明:DOC 为Word.Document.8对象 其应用程序为application 则 程序PROG-ID为Word.application
  63. *.DOCX文件的默认值为Word.Document.12   
  64. Content Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
  65. 另外:有些程序的PROG-ID 在文档类型的 OpenWithProgids下面
  66. 如:.DMP文件 VisualStudio.dmp.8.0
  67. |;

评分

参与人数 1明经币 +2 收起 理由
mccad + 2 【好评】 【分享明经——发程序、拜新年

查看全部评分

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

本版积分规则

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

GMT+8, 2024-12-27 14:22 , Processed in 0.170951 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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