找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 158|回复: 3
打印 上一主题 下一主题

原点设置到两条线交点上面

[复制链接]

5

主题

33

帖子

2317

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2317
跳转到指定楼层
1#
发表于 2016-11-5 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

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

x
defun( set_origin ()
   popup = axlUIPopupDefine(nil (list
     (list "Done" `axlFinishEnterFun)
         (list "Cancel" `axlcancelEnterFun)))
         axlUIPopupSet(popup)
   axlClearSelSet()
   axlSetFindFilter( ?enabled list("noall" "CLINESEGS") ?onButtons list("noall" "CLINESEGS"))
   axlSingleSelectPoint()
        cline1 = car(axlGetSelSet())
        axlClearSelSet()
        axlHighlightObject(cline1)
        when(cline1
                axlSetFindFilter( ?enabled list("noall" "CLINESEGS") ?onButtons list("noall" "CLINESEGS"))
                axlSingleSelectPoint()
                cline2 = car(axlGetSelSet())
                axlClearSelSet()
                axlDehighlightObject(cline1)
        )
        when(cline1 && cline2 && cline1->layer == cline2->layer
                point = axl_ol_ol2(cline1->startEnd cline2->startEnd)
              axlDBChangeDesignOrigin(list(minus(xCoord(car(point))) minus(yCoord(car(point)))))
         )
)
axlCmdRegister("Origin" 'set_origin)

有个问题需要解决:当两天线交点在延长线上面时,原点不会设置到延长线交点上@deargds

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏2 支持!支持! 反对!反对!

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

2#
发表于 2016-11-7 13:31 | 只看该作者
axl_ol_ol2这个只能求出实交点,使用下面这个函数试一下,使用方法如下:
line_intersect(cline1->startEnd cline2->startEnd)
  1. defun( line_intersect (line1 line2)
  2. prog((x0 y0 x1 y1 x2 y2 x3 y3 x y)
  3.         x0 = xCoord(nth(0 line1))
  4.         y0 = yCoord(nth(0 line1))
  5.         x1 = xCoord(nth(1 line1))
  6.         y1 = yCoord(nth(1 line1))

  7.         x2 = xCoord(nth(0 line2))
  8.         y2 = yCoord(nth(0 line2))
  9.         x3 = xCoord(nth(1 line2))
  10.         y3 = yCoord(nth(1 line2))

  11.         y = car(errset(((y0-y1)*(y3-y2)*x0 + (y3-y2)*(x1-x0)*y0 + (y1-y0)*(y3-y2)*x2 + (x2-x3)*(y1-y0)*y2 ) / ((x1-x0)*(y3-y2) + (y0-y1)*(x3-x2))))
  12.         if(y then
  13.                 x = x2 + (x3-x2)*(y-y2) / (y3-y2)
  14.                 return(list(x y))
  15.         else
  16.                 return(nil)
  17.         )
  18. )
  19. )
  20. ;deargds
  21. ;www.eda365.com
复制代码



谁画出这天地 又画下我和你

64

主题

613

帖子

2459

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2459
3#
发表于 2016-11-8 11:35 | 只看该作者
谢谢分享

10

主题

379

帖子

4169

积分

五级会员(50)

Rank: 5

积分
4169
4#
发表于 2016-11-14 14:29 | 只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-26 12:45 , Processed in 0.054515 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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