- 积分
- 14013
- 明经币
- 个
- 注册时间
- 2013-9-7
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 荒野孤行 于 2016-1-5 20:27 编辑
以下功能适用于电子行业根据面阻值计算出不同图形的方阻值(计算出来的误差偏大,因为需要将等分段长度/精度进行转换,请自行修改),演示如下:
;;; ***计算阻值 程序开始***
(defun c:t1 ()
(setvar "osmode" 15359)
(setvar "cmdecho" 0)
(princ
"\n★功能:计算通道的阻抗值。说明:计算前需要将通道进行等分处理;若有必要,请联系此软件的制作者。\n计算公式:通道阻抗值=∑方阻值*沿电流方向等分段长度/垂直电流方向的长度。\n"
)
(vl-load-com)
(initget 7)
(setq jdz (getdist "\n沿电流方向的等分段长度/精度为:"))
(initget 6)
(if (not
(setq fzz
(getreal (strcat "\n输入方阻值:<" (rtos 75 2) "> Ω/□"))
)
)
(setq fzz 75)
)
(setq sumlen 0)
(princ "\n选择对象:")
(while
(progn
(setq ent1 (entsel "\n请选择★源★直线或多段线:\n"))
(not
(if (= ent1 nil)
nil
(wcmatch (cdr (assoc 0 (entget (setq entnam1 (car ent1)))))
"*POLYLINE,LINE,SPLINE"
)
)
)
)
(princ
"\n提示:选取的不是直线、多段线或未选取任何图元,请重新选取"
)
)
(while
(progn
(setq ent2 (entsel "\n请选择★参照★直线或多段线:\n"))
(not
(if (= ent2 nil)
nil
(wcmatch (cdr (assoc 0 (entget (setq entnam2 (car ent2)))))
"*POLYLINE,LINE,SPLINE"
)
)
)
)
(princ
"\n提示:选取的不是直线、多段线或未选取任何图元,请重新选取"
)
)
(setq obj1 (vlax-ename->vla-object entnam1)
obj2 (vlax-ename->vla-object entnam2)
len1 (vlax-curve-getdistatparam
obj1
(vlax-curve-getendparam obj1)
)
i 0
sumlen 0
num (fix (/ len1 jdz))
)
(repeat num
(setq pt (vlax-curve-getPointAtDist obj1 (* i jdz 1.0))
dis (/ jdz
(distance (vlax-curve-getClosestPointTo obj2 pt) pt)
1.0
)
sumlen (+ sumlen dis)
i (+ i 1)
)
)
(setq resul (* sumlen fzz))
(princ (strcat "\n★计算结果:通道阻抗值约为 "
(rtos resul 2 3)
" Ω\n"
)
)
(princ)
)
;;; ***计算阻值 程序结束***
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|