前面有介绍过两种CAD画两条样条线的中心线的方法,分别是用三维曲面提取中心线和画辅助取中心线,这两种方法。其实还有更简单的方法,就是用插件,感兴趣的可以自己找有相关功能的插件来使用。

这里提供一个。

(defun c:zx( / ent1 ent2 num p1list p2list p3list i cp p1 cv1 cv2 stp endp) (setq ent1 (car (entsel "\n选择第1对象:")))

(setq ent2 (car (entsel"\n选择第2对象:")))

(setq cv1 ent1 cv2 ent2)

(setq num (getint "\n控制点数量(越多效果越好:"))

(if (ssget "x" (list (cons 0 "POINT"))) (command "erase" (ssget "x" (list (cons 0 "POINT"))) ""))

(command "divide" ent1 num)

(setq ent1 (ssget "x" (list (cons 0 "POINT"))))

(setq p1list nil i 0)

(while (setq cp (ssname ent1 i))

(setq p1list (append p1list (list (cdr (assoc 10 (entget cp))))))

(setq i (1+ i))

)

(setq stp (vlax-curve-getStartPoint cv1) endp (vlax-curve-getEndPoint cv1))

(if (> (distance stp (nth 0 p1list)) (distance endp (nth 0 p1list)))

(setq p1list (append (list endp) p1list (list stp)))

(setq p1list (append (list stp) p1list (list endp)))

)

(command "erase" ent1 "")

(command "divide" ent2 num)

(setq ent2 (ssget "x" (list (cons 0 "POINT"))))

(setq p2list nil i 0)

(while (setq cp (ssname ent2 i))

(setq p2list (append p2list (list (cdr (assoc 10 (entget cp))))))

(setq i (1+ i))

)

(setq stp (vlax-curve-getStartPoint cv2) endp (vlax-curve-getEndPoint cv2))

(if (> (distance stp (nth 0 p2list)) (distance endp (nth 0 p2list)))

(setq p2list (append (list endp) p2list (list stp)))

(setq p2list (append (list stp) p2list (list endp)))

)

(command "erase" ent2 "")

(if (> (distance (nth 0 p1list) (nth 0 p2list)) (distance (nth 0 p1list) (nth (- num 2) p2list)))

(setq p2list (reverse p2list))

)

(setq i 0 p3list nil)

(while (and (setq cp (nth i p1list)) (setq cp1 (nth i p2list)))

(setq p3 (list (* (+ (car cp) (car cp1)) 0.5) (* (+ (cadr cp) (cadr cp1)) 0.5)))

(setq p3list (append p3list (list p3)) i (1+ i))

)(command "undo" "be")

(setq temposm (getvar "osmode"))

(setvar "osmode" 0)

(setq i 2 p1 (nth 0 p3list) cp (nth 1 p3list))

(command "pline" (trans p1 0 1) (trans cp 0 1) "")

(setq ent1 (entlast) p1 cp)

(while (setq cp (nth i p3list))

(command "line" (trans p1 0 1) (trans cp 0 1) "")

(command "pedit" ent1 "J" (entlast) "" "")

(setq p1 cp i (1+ i))

)

(setvar "osmode" temposm)(command "undo" "e")

(princ)

)

这种方法相对来说更简单,能很快生成一个近似中心线来,这段代码生成的是一个多段线。

谈家具【微信公众号:H90TJJ】采用BY-NC-SA协议进行授权 , 转载请注明:来自谈家具(www.9tjj.com):如何画两条样条线间中心线之三:CAD插件/Lisp编程法!

LISP道路中线_如何画两条样条线间中心线之三:CAD插件/Lisp编程法相关推荐

  1. lisp 相贯线展开_一个画两管相接相贯线的程序 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    下面的程序也可以画管子的相贯线,输入的参数D为大管直径,d为小管直径(可以等于D),B为两管的夹角,插入点为小管中心线与大管外壁的交点.该程序在R14上调试通过. (DEFUN C:XGX () (S ...

  2. 好分数一个等第是什么意思_老师批试卷总要在分数下面画两条横线是什么意思?...

    原标题:老师批试卷总要在分数下面画两条横线是什么意思? 为什么老师改卷之后 会在分数下画两条横线呢? 你要去问老师? 别问了,可能连老师都不知道-- 来看看这位当了老师的网友怎么说的: "总 ...

  3. 为什么老师批改完试卷,分数下要画两条横线?今天终于知道了!

    全世界只有3.14 % 的人关注了 爆炸吧知识 总有考试分数下画两条横线的习惯,原来是这样形成的! 为什么老师改卷之后 会在分数下画两条横线呢? 你要去问老师? 别问了,可能连老师都不知道-- 来看看 ...

  4. IOS之Label画一条删除线

    IOS之Label画一条删除线 例如上面的价格100 如何对100添加删除线. 我们需要自定义一个Label,继承于UILabel系统类.在xib上对控件添加自定义Label类.LJCenterLab ...

  5. Cover V2将启用两条产品线 本周开始进行V2 UI开发

    2月24日,DeFi保险协议Cover Protocol官方公布V2产品计划.根据该计划,Cover V2将启用两条产品线:1.点对点保险市场,与V1相同,任何人都可以成为做市商提供承保:2.保险货币 ...

  6. python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...

    我有两条曲线的x和y值列表,它们都有奇怪的形状,而且我没有任何函数.我需要做两件事:(1)绘制它并对曲线之间的区域进行着色,如下图所示:(2)找到曲线之间该着色区域的总面积. 在matplotlib中 ...

  7. 两条波浪线符号_四年级数学上册第二单元“线的认识”作业单(附带答案)

    "线的认识"作业单 一.线段.射线和直线. 1."线段.射线和直线"之间的联系与区别. 名称 形状 长度 端点 关系 2.表示方法:分别画出一条线段.射线和直线 ...

  8. solidworks 怎么画两条直线不连续画线

    SolidWorks画直线的时候 我画完一条直线还想在旁边再画一条直线 两条直线是不相连的 要怎么画呢 我每次都是把直线点没 然后再点直线画 这样很麻烦 不知道是不是有其他的方法 答: 画完了双击鼠标

  9. matlab在一张图上画两条折线图,excel2013怎么在一张曲线图上绘制多条曲线?

    office软件每年的更新速度很快,虽然更新后的版本肯定能够实现更新前的功能,但是由于版式方面的改进,使得使用者初次使用时不是特别得心应手.下面重点讲述一下,如何利用excel2013在同一张图中做多 ...

最新文章

  1. 【重磅来袭】斯坦福开源Python版NLP库Stanza:涵盖66种语言!
  2. C/C++中作用域详解(转)
  3. MySQL命名、设计及使用规范《MySQL命名、设计及使用规范》
  4. Mysql优化之索引优化
  5. 函数用法r语言_R语言中的apply函数族
  6. Java 设计模式 Adapter 类适配器 模式
  7. 51单片机读引脚和读端口测试总结
  8. 基于Java的网上订餐系统(附:源码 课件)
  9. 利用计算机画统计图教学设计,小学数学人教版四年级上册《条形统计图》教学设计及反思...
  10. 二分类混淆矩阵结构_「混淆矩阵」4.4.2分类模型评判指标(一) - 混淆矩阵(Confusion Matrix) - seo实验室...
  11. ad中按钮开关的符号_电工最常用电气元件实物及对应符号
  12. 钢琴乐谱怎么看?学习五线谱及其口诀
  13. PS如何去除图片中文字
  14. 联想裁员:公司不是我的家
  15. 牛客编程语言练习赛第三场(C++)
  16. 计算机蓝屏代码0xc0000020,Win10运行程序提示“损坏的映像 错误0xc0000020”解决方法图文教程...
  17. 辨别虚假高音质(320k/Ape/Flac)的音乐文件
  18. ABAP其他基本语法
  19. 招商头条:上海将出新规促进跨国公司地区总部发展;第二十五届兰洽会落幕 共签约507个项目
  20. yjh的实习生涯之自动化测试(2)---新建一个自动登录淘宝例子以及如何将java代码运行到手机上

热门文章

  1. Shared Control【共享控制】-Controlling Assistive Robots with Learned Latent Actions
  2. 目标检测舰船数据集整合
  3. 自然语言处理发展历程
  4. Mybatis向Oracle数据库写数据时报错:无效的列类型1111
  5. 熬夜总结了面试套路,2W字长文!
  6. 在thinkphp中 结合 支付宝 paypal 财付通 .
  7. 成都网站建设企业网站备案需要哪些资料?
  8. 考计算机一级要2B铅笔嘛,考试中的答题卡为什么用2B铅笔填涂,看完你就明白了...
  9. 什么叫做“微信式”的恋爱?
  10. php处理heic格式图片,电脑上怎么查看HEIC格式?一招解决HEIC转JPG,轻轻松松看图片!...