明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 自贡黄明儒

[讨论] 有人说,这个还不错

  [复制链接]
发表于 2022-12-12 12:30:04 | 显示全部楼层

请教黄大师,对于非封闭的图元,当向上投影的时候,得到上面的形状。
能否改为下面的形状呢?

本帖子中包含更多资源

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

x

点评

源码,自己改吧。  发表于 2022-12-12 12:58
发表于 2022-12-12 12:47:28 | 显示全部楼层
真的不错   
 楼主| 发表于 2022-12-12 18:23:13 来自手机 | 显示全部楼层
嘉伟钢结构 发表于 2022-12-12 12:09
老师:快捷命令是什么?

Ⅹ1    看c:后面,就是命令
发表于 2022-12-12 23:15:50 | 显示全部楼层
核心函数x11里面,全部是各种坐标系转换、角度换算、计算垂足之类的。
看了一会儿就云里雾里了。
黄大师的功力真是不一般。

想改代码,都无从改起。

点评

主要是没时间,有时间再说。  发表于 2022-12-13 07:10
发表于 2022-12-13 08:44:13 | 显示全部楼层
非常有意思!!!
发表于 2022-12-13 17:23:18 | 显示全部楼层
本帖最后由 llsheng_73 于 2022-12-13 17:53 编辑
20060510412 发表于 2022-12-12 12:30
请教黄大师,对于非封闭的图元,当向上投影的时候,得到上面的形状。
能否改为下面的形状呢?

  1. (vl-load-com)
  2. (defun xyofen(e fun / p i pt n en)
  3.   (or(=(type e)'ename)(setq e(vlax-vla-object->ename e)))
  4.   (cond((vl-position'(0 . "LINE")(setq en(entget e)))
  5.         (list(vlax-curve-getstartpoint e)(vlax-curve-getendpoint e)))
  6.        ((WCMATCH(cdr(assoc 0 en))"*POLYLINE")
  7.         (setq i -1 n(vlax-curve-getEndParam e))
  8.         (while(< i n)
  9.           (setq i(1+ i)p(vlax-curve-getPointAtParam e i))
  10.           (or(equal(car pt)p fun)(setq pt(cons p pt))))
  11.         (reverse pt))
  12.        (t(vl-remove'nil(mapcar'(lambda(x)(cdr(assoc x en)))'(10 11 12 13 14))))))
  13. (defun s2e(s / n lst)(if(=(type s)'pickset)(repeat(setq n(sslength s))(setq n(1- n)lst(cons(ssname s n)lst)))))
  14. (defun PerLn(p p1 p2);;;点p到p1,p2所在直线垂距及垂足
  15.   (setq p2(mapcar'- p1 p2))
  16.   (list(abs(car(trans(mapcar'- p1 p) 0 p2)))
  17.        (trans(mapcar'+(mapcar'*'(1 1 0)(trans p1 0 p2))(mapcar'*'(0 0 1)(trans p 0 p2)))p2 0)))
  18. (defun delsame(l1 fuz / l2);;带容差去重(重复过的取第一次出现)
  19.       (while l1(setq l2(cons(car l1)l2)l1(vl-remove-if'(lambda (x)(equal(car l1)x fuz))(cdr l1))))
  20.       (reverse l2))
  21. (defun ScreenWid();;当前屏幕宽度
  22.   (*(apply'/(getvar'screensize))(getvar'viewsize)))
  23. (defun c:tt(/ s pt pts p o w ls)
  24.   (while(setq s(s2e(ssget)))
  25.     (and(setq a nil pt nil o(getpoint"指定参考线上一点"))
  26.         (vl-every(function(lambda(x)(setq pt(cons(xyofen x 1e-3)pt))))s)
  27.         (setq pts(delsame(apply(function append)pt)1e-3))
  28.         (while(/=(car(mapcar(function set)'(a p)(grread 5)))3)(redraw)
  29.           (setq ls nil)
  30.           (if(= a 5)
  31.             (progn
  32.               (grdraw(polar o(angle p o)(setq w(ScreenWid)))(polar p(angle o p)w)5)
  33.               (vl-some(function(lambda(x / q s)
  34.                                  (setq q(cadr(PerLn x p o)))
  35.                                  (or(vl-some(function(lambda(a)
  36.                                                        (vl-some(function(lambda(a b / o)(and(setq o(inters x q a b))(not(equal x o 1e-3)))))a(cdr a))))pt)
  37.                                     (grdraw x q 4)
  38.                                     (setq ls(cons(list x q)ls)))nil))pts)))))
  39.         (if(= a 3)(vl-every(function(lambda(x)(entmakex(list'(0 . "line")(cons 10(car x))(cons 11(cadr x))'(62 . 4)))))ls))
  40.         ))

没有象黄老师那样搞自动参考线,需要自己通过两点确定参考方向,也没有计算所需要的参考线长度

本帖子中包含更多资源

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

x

点评

真厉害,赞  发表于 2022-12-13 21:15

评分

参与人数 2明经币 +2 收起 理由
自贡黄明儒 + 1 很给力!
guosheyang + 1 赞一个!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

发表于 2022-12-15 17:22:30 来自手机 | 显示全部楼层
自动辅助线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 11:52 , Processed in 0.171559 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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