溜溜问答 > 平面设计 > CAD > AutoCAD二次开发
溜溜·问答

AutoCAD二次开发

我要回答
kiss mayue
kiss mayue 2021-09-02 81人阅读 分类: CAD
编起来是什么样子的?是不是很难的?能不能给我一个例子?能把具体的代码写出来吗?谢谢了(dyPSoft前一部分的代码这么没层次感的?是不是lisp就是这样的?我真的连一行lisp也没见过的啊.谢谢了)
4个回答

一种是Autolisp语言开发的
还有一个就是利用vb开发的接口,称为activex Automation

以上两位的回答过于繁琐,让大师我给他们简略一下,取其精华.

查看全部
评论 采纳

这两个确实太麻烦了,简直是要把人弄晕,开始理解的化,可以是画个三角形什么的,编程,找本书看看就明白,几行而已

查看全部
评论 采纳

一种是Autolisp语言开发的,过时,不太好用。
还有一个就是利用vb开发的接口,称为activex Automation。是从1995年前后CAD才支持的,可以把CAD作为vb中的一个对象进行控制。只要你会使用vb,难度不是很大,此外还可以方便地定制自己的菜单等等。
买书的时候,书店老板是不会知道这些的。但是有些书中包括这部分的内容。打开目录了解一下就可。

查看全部
评论 采纳

我还是喜欢lisp,说过时?呵呵,那你问问天正软体是用什麽开发出来的。其实也挺简单的,举个例子的话,因为我是做建筑设计的,自已写了个z坐标一次归0的lisp:
(vmon) (defun c:zz (/ wholesel count treatcount chcount ent curent segcurent entlist segentlist etflag dfetflag input ) (command "_.undo" "_begin") (setq old_err *error* *error* zz_err ) (PRinc " ***********z坐标值归零程序***********作者 燕鹏动力******" ) (setvar "cmdecho" 0) (setq wholesel (ssget '((-4 . "") ) ) ) (if (null wholesel) (Progn (PRinc "\n未选择到有效实体!") (exit) ) ) (setq count 0) (setq treatcount 0) (setq chcount 0) (PRinc "\n") (while (< count (sslength wholesel)) (setq curent (ssname wholesel count)) (setq entlist (entget curent)) (setq count (1+ count)) (PRinc "\r已经完成 ") (PRinc (rtos (/ count (sslength wholesel) 0.01) 2 1)) (PRinc " %.") (PRinc) (if (or (/= (CADr (assoc 210 entlist)) 0.0) (/= (CADdr (assoc 210 entlist)) 0.0) (/= (CADddr (assoc 210 entlist)) 1.0) ) (Progn (if (null dfetflag) (Progn (setq dfetflag "n") (setq etflag dfetflag) (initget 0 "y n") (setq input (getkWord (strcat "\n***燕鹏动力友情提示***图中存在伸展方向非常规的实体,若不更改某些z值不能归零,是否强行更改(y/n) <" dfetflag ">:" ) ) ) (if input (setq etflag input) ) (setq dfetflag etflag) ) ) (if (= etflag "y") (Progn (setq entlist (SUbst (cons 210 '(0.0 0.0 1.0)) (assoc 210 entlist) entlist ) ) (entmod entlist) ) ) ) ) (cond ((= "point" (CDR (assoc 0 entlist))) (setq oldpt (CDR (assoc 10 entlist))) (if (/= (CADdr oldpt) 0.0) (Progn (setq treatcount (1+ treatcount)) (setq newpt (list (car oldpt) (CADr oldpt) 0.0)) (setq entlist (SUbst (cons 10 newpt) (cons 10 oldpt) entlist) ) (entmod entlist) (setq chcount (1+ chcount)) ) ) ) ((= "line" (CDR (assoc 0 entlist))) (setq oldbgpt (CDR (assoc 10 entlist))) (setq oldendpt (CDR (assoc 11 entlist))) (if (or (/= (CADdr oldbgpt) 0.0) (/= (CADdr oldendpt) 0.0)) (Progn (setq treatcount (1+ treatcount)) (setq newbgpt (list (car oldbgpt) (CADr oldbgpt) 0.0)) (setq newendpt (list (car oldendpt) (CADr oldendpt) 0.0)) (setq entlist (SUbst (cons 10 newbgpt) (cons 10 oldbgpt) entlist) ) (setq entlist (SUbst (cons 11 newendpt) (cons 11 oldendpt) entlist ) ) (entmod entlist) (setq chcount (1+ chcount)) ) ) ) ((= "lwpolyline" (CDR (assoc 0 entlist))) (if (/= (CDR (assoc 38 entlist)) 0.0) (Progn (setq treatcount (1+ treatcount)) (setq entlist (SUbst (cons 38 0.0) (assoc 38 entlist) entlist ) ) (entmod entlist) (setq chcount (1+ chcount)) ) ) ) ((= "polyline" (CDR (assoc 0 entlist))) (setq oldpt (CDR (assoc 10 entlist))) (if (/= (CADdr oldpt) 0.0) (Progn (setq treatcount (1+ treatcount)) (setq newpt (list (car oldpt) (CADr oldpt) 0.0)) (setq entlist (SUbst (cons 10 newpt) (cons 10 oldpt) entlist) ) (entmod entlist) (setq chcount (1+ chcount)) ) ) ) ((or (= "arc" (CDR (assoc 0 entlist))) (= "circle" (CDR (assoc 0 entlist))) ) (setq oldcenpt (CDR (assoc 10 entlist))) (if (/= (CADdr oldcenpt) 0.0) (Progn (setq treatcount (1+ treatcount)) (setq newcenpt (list (car oldcenpt) (CADr oldcenpt) 0.0)) (setq entlist (SUbst (cons 10 newcenpt) (cons 10 oldcenpt) entlist ) ) (entmod entlist) (setq chcount (1+ chcount)) ) ) ) ((= "text" (CDR (assoc 0 entlist))) (setq oldinspt (CDR (assoc 10 entlist))) (setq oldjustpt (CDR (assoc 11 entlist))) (if (or (/= (CADdr oldinspt) 0.0) (/= (CADdr oldjustpt) 0.0)) (Progn (setq treatcount (1+ treatcount)) (setq neWinspt (list (car oldinspt) (CADr oldinspt) 0.0) ) (setq newjustpt (list (car oldjustpt) (CADr oldjustpt) 0.0) ) (setq entlist (SUbst (cons 10 neWinspt) (cons 10 oldinspt) entlist ) ) (setq entlist (SUbst (cons 11 newjustpt) (cons 11 oldjustpt) entlist ) ) (entmod entlist) (setq chcount (1+ chcount)) ) ) ) ((= "insert" (CDR (assoc 0 entlist))) (setq oldinspt (CDR (assoc 10 entlist))) (if (/= (CADdr oldinspt) 0.0) (Progn (setq treatcount (1+ treatcount)) (setq neWinspt (list (car oldinspt) (CADr oldinspt) 0.0) ) (setq entlist (SUbst (cons 10 neWinspt) (cons 10 oldinspt) entlist ) ) (entmod entlist) (setq chcount (1+ chcount)) ) ) ) ) ) (PRinc (strcat "\n**燕鹏动力友情提示***共选中" (itoa count) "个有效实体, 其中z坐标值不归零的有" (itoa treatcount) "个实体,成功转换" (itoa chcount) "个实体:||作者 燕鹏动力||http://www.china-abbs.com||" ) ) (PRinc) (setq etflag nil) (setq dfetflag nil) (command "_.undo" "_end") ) (defun zz_err (s) (PRinc "\n命令中止!**燕鹏动力友情提示***http://www.china-abbs.com***") (setq etflag nil dfetflag nil ) (redraw) (setq *error* old_err) (PRinc) ) (PRinc)

可能这个格式写得看不清,再来一个:
数字匹量修改:
change elevations

;num.lsp
(defun c:num ()
(setq ss1 (ssget)
len1 (sslength ss1)
cnt 0
add (getreal "\nenter number to add to elevations: ")
)
(while (< cnt len1)
(setq dent (entget (ssname ss1 cnt))
txt (CDR (assoc 1 dent))
len (strlen txt)
cnt1 1
)
(while (<= cnt1 len)
(if (/= (SUbstr txt cnt1 1) " ")
(Progn
(setq num (atof (SUbstr txt cnt1 len))
numlen (strlen (rtos num 2 5)))
(if (/= num 0)
(Progn
(cond ((= (SUbstr txt cnt1 numlen) (rtos num 2 5)) (setq sp 0))
((= (SUbstr txt cnt1 (- numlen 1)) (rtos num 2 1)) (setq sp 1))
((= (SUbstr txt cnt1 (- numlen 3)) (rtos num 2 0)) (setq sp 3))
);cond
(setq rtxt (SUbstr txt (- (+ cnt1 numlen) sp) len)
num (+ add num)
numt (rtos num 2 5)
ntx (strcat (SUbstr txt 1 (- cnt1 1)) numt rtxt)
old (assoc 1 dent)
new (cons 1 ntx)
dent (SUbst new old dent)
cnt1 (+ 1 len)
);setq
(entmod dent)
);Progn
)));if,Progn,if
(setq cnt1 (1+ cnt1))
);end while
(setq cnt (1+ cnt))
);while
);defun

(dyPSoft前一部分的代码这么没层次感的?是不是lisp就是这样的?我真的连一行lisp也没见过的啊.谢谢了)
那到不是,最主要以前在广州的时候写的,后来直接用记事本文件把源码拷过来,然后就变成格式很乱的了,本人一向挺懒的,所以一直没改过来,就这样一直用了。呵呵。
第二段的很清楚明了,应该看得懂。

查看全部
(16) 评论 采纳

学习CAD,刚入门便会遇到很多问题,如果没有得到有效的解决办法,会形成我们学习过程的阻碍

今天小编带来3套CAD最合适的课程,不妨先学习看看,或许可以帮你在入门CAD的路上事半功倍~


1. 【CAD2014零基础入门到精通教程】:这套课程非常适合零基础接触CAD的同学,因为它非常全面和系统,包含了基础知识、平面、三维、建模以及大量的案例实操练习,学习后能快速掌握软件CAD的运用和制图的规范。


2. 【CAD施工图全套学习课程】:这套教程主要讲解整套CAD施工图绘制,以及人体工程学,施工工艺,并结合项目实战案例全面剖析,培养规范绘图思维,帮你快速提升施工图深化能力。


3. 【3DMax+CAD+PS+VR室内设计施工图效果图后期合集】:通过3DMax+CAD+PS+VR等软件进行讲解,主要讲解室内、室外效果图教程。课程包含:室内家装全套设计、 家具全屋定制工装效果图设计、 展示店面设计、舞台设计等多套实训案例,适合想要综合学习的同学

相关问题
回答问题得下载币
32326
总悬赏金额
热门文章
客厅厨房一体模型设计布局有哪些?
客厅厨房一体模型设计布局有哪些?
​客厅厨房一体化是常见的室内设计布局之一,它兼具着功能性和实用性,可以打造出家人相处舒适和谐的空间。在设计过程中设计师需要根据户型和生活习惯及日常需求打造适合的布局。今天小编整理了4种客厅厨房一体的设计布局方法,大家一起来看看吧~
1978人阅读
如何在CAD中使用大理石填充图案?
如何在CAD中使用大理石填充图案?
​在建筑和室内设计中,填充图案是一个很常见的需求。在CAD软件中,填充图案可以通过使用图案填充工具来实现。大理石是一种常用的填充材料,可以用于地板、墙面和装饰细节等方面。下面将介绍如何在CAD中使用大理石填充图案。
1645人阅读
如何在CAD中应用木纹填充图案?
如何在CAD中应用木纹填充图案?
在CAD中,填充图案是一项非常重要的技能,可以帮助您更好地表达您的设计想法。而木纹填充图案是一种广泛使用的填充类型之一,特别是在家具、建筑设计和装饰方面。本文将为您介绍如何在CAD中应用木纹填充图案。
1219人阅读
亚克力和pvc材质哪个更好?有什么区别?
亚克力和pvc材质哪个更好?有什么区别?
日常装修的过程中,可能你不知道哪些材料更好,比如常见材料的有亚克力和pvc等。那么,亚克力材质和pvc材质哪个更好呢?下面小溜就给大家进行全面的分析一下亚克力和pvc材质的区别。
928人阅读
护角条pvc材质还是铝合金材质好?
护角条pvc材质还是铝合金材质好?
​在装修的过程中,护角条起着很重要的作用,它可以避免墙面磕碰,延长墙面的使用寿命,那么护角条选择pvc材质还是铝合金材质好呢?下面小溜为大家详细介绍
825人阅读
发表成功!
感谢您的分享!
好的