找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

求助关于金手指自动加SHAPE的SKILL

[复制链接]

14

主题

143

帖子

-1万

积分

未知游客(0)

积分
-11958
跳转到指定楼层
1#
发表于 2015-9-21 09:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wuyuhe 于 2015-9-21 09:46 编辑

已经放好了PAD,画好了OUTLINE,现在想要让它根据这些自动跑出来PLACE_BOULD_TOP,要求PIN上端到SHAPE上端距离为2.5MM,从PIN左端到SHAPE左端也是距离2.5MM,但是SHAPE下端是沿着OUTLINE的,如图所示:

现在我想的是如果直接在FIND里选择了PIN,刚可以按要求跑出左右,上端距离2.5MM的,但是这下端沿着OUTLINE的我就不知道怎么弄了,如果选了PIN和OUTLINE的话,那左右和上端的2.5我又不知道怎么选择了。
大家帮忙想想怎么弄啊

本帖子中包含更多资源

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

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

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
2#
发表于 2015-9-21 09:55 | 只看该作者
1.首先你要先判斷出左邊pin的位置,並依照規則設定shape的左下角位置
2.在判斷金手指最右邊pin的位置,並依照規則設定shape的右上角位置
3.依照兩個位置來建一個shape

点评

能帮忙看一下下面的代码,为什么SHAPE出不来啊? axlCmdRegister("ts" 'add_via_noprobe_top) procedure( coordinate() axlClearSelSet() axlVisibleDesign(nil) (axlSetFindFilter ?enabled  详情 回复 发表于 2015-9-23 10:12

28

主题

307

帖子

1073

积分

四级会员(40)

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

积分
1073
3#
发表于 2015-9-21 13:54 | 只看该作者
好想知道

14

主题

143

帖子

-1万

积分

未知游客(0)

积分
-11958
4#
 楼主| 发表于 2015-9-23 10:12 | 只看该作者
XYX365 发表于 2015-9-21 09:55
1.首先你要先判斷出左邊pin的位置,並依照規則設定shape的左下角位置
2.在判斷金手指最右邊pin的位置,並依 ...

能帮忙看一下下面的代码,为什么SHAPE出不来啊?
axlCmdRegister("ts" 'add_via_noprobe_top)
procedure( coordinate()
    axlClearSelSet()
    axlVisibleDesign(nil)
    (axlSetFindFilter ?enabled
     list("noall" "lines") ?onButtons
     list("noall" "lines")
     )
    axlVisibleLayer("board geometry/assembly_detail" t)
    axlVisibleUpdate(t)
    axlUIWUpdate(nil)
    axlAddSelectAll()
    assemblydetail=axlGetSelSet()
    assemblydetaildbid=nth(0 assemblydetail)
    assemblydetaillist=assemblydetaildbid->segments
    assemblydetailbbox=assemblydetaildbid->bBox
    myXY1=nth(0 assemblydetailbbox)
    myXY2=nth(1 assemblydetailbbox)
    detailY1=nthelem(2 myXY1)
    detailY2=nthelem(2 myXY2)
    assemblylinex=list()
  foreach(assemblydetail assemblydetaillist
        assemblyline=assemblydetail->startEnd
        assemblyline0=nth(0 nth(0 assemblyline))
        assemblyline1=nth(0 nth(1 assemblyline))
        
        if(assemblyline0==assemblyline1
          assemblylinex=cons(assemblyline0 assemblylinex)
          );endif
);endforeach
assemblylinex=reverse(assemblylinex)
          detailX1   = nthelem(1 assemblylinex)
          detailX2   = nthelem(4 assemblylinex)
          detailX3   = nthelem(3 assemblylinex)
          detailX4   = nthelem(2 assemblylinex)
         
axlVisibleUpdate(t)
axlVisibleDesign(nil)
axlVisibleLayer("IN/TOP" t)
axlVisibleUpdate(t)
axlUIWUpdate(nil)
          myExtents = axlExtentDB()
          myXY3  = nthelem(1 myExtents)
          myXY4  = nthelem(2 myExtents)
          pinX1   = nthelem(1 myXY3)
         ; myY1   = nthelem(2 myXY1)
          pinX2   = nthelem(1 myXY4)
          pinY2   = nthelem(2 myXY4)
)
;;;=========================================================================================
;=========================================================================
procedure( add_via_noprobe_top()
prog(()
    coordinate()
    myPath1=nil   
          myPath1 = axlPathStart((list detailX1:detailY1))
          myPath1 = axlPathLine(myPath1 0  detailX2:detailY1)
          myPath1 = axlPathLine(myPath1 0  detailX2pinY2+0.635))
          myPath1 = axlPathLine(myPath1 0  (detailX3+0.762)pinY2+0.635))
          myPath1 = axlPathLine(myPath1 0  (detailX3+0.762)detailY2+0.762))
          myPath1 = axlPathLine(myPath1 0  (detailX2-0.762):(detailY2+0.762))
          myPath1 = axlPathLine(myPath1 0  (detailX2-0.762):(pinY2+0.635))
          myPath1 = axlPathLine(myPath1 0  detailX1:(pinY2+0.635))
          myPath1 = axlPathLine(myPath1 0  detailX1:detailY1)
axlDBCreateShape(myPath1 t "VIA KEEPOUT/TOP")         
axlDBCreateShape(myPath1 t "MANUFACTURING/NO_PROBE_TOP")         
))

点评

你可以在這一行(myPath1=nil) 下面加入這一行printf("detailX1=%L, detailY1=%L\n" detailX1 detailY1) 再重新執行, 並告訴我detailX1 和 detailY1 輸出直是多少?  详情 回复 发表于 2015-9-23 10:26

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
5#
发表于 2015-9-23 10:26 | 只看该作者
wuyuhe 发表于 2015-9-23 10:12
能帮忙看一下下面的代码,为什么SHAPE出不来啊?
axlCmdRegister("ts" 'add_via_noprobe_top)
procedur ...

你可以在這一行(myPath1=nil) 下面加入這一行printf("detailX1=%L, detailY1=%L\n" detailX1 detailY1)



再重新執行, 並告訴我detailX1 和 detailY1 輸出直是多少?

点评

Skill > detailY1 -2.25 Skill > detailY2 4.25 Skill > detailX1 -1.04 Skill > detailX2 35.323 Skill > detailX3 22.155 Skill > detailX4 19.755 Skill > pinX1 -0.225 Skill > pinX2 34.515 Sk  详情 回复 发表于 2015-9-23 10:33
detailX1=-1.04, detailY1=-2.25  详情 回复 发表于 2015-9-23 10:32

14

主题

143

帖子

-1万

积分

未知游客(0)

积分
-11958
6#
 楼主| 发表于 2015-9-23 10:32 | 只看该作者
XYX365 发表于 2015-9-23 10:26
你可以在這一行(myPath1=nil) 下面加入這一行printf("detailX1=%L, detailY1=%L\n" detailX1 detailY1)
...

detailX1=-1.04, detailY1=-2.25

14

主题

143

帖子

-1万

积分

未知游客(0)

积分
-11958
7#
 楼主| 发表于 2015-9-23 10:33 | 只看该作者
XYX365 发表于 2015-9-23 10:26
你可以在這一行(myPath1=nil) 下面加入這一行printf("detailX1=%L, detailY1=%L\n" detailX1 detailY1)
...

Skill > detailY1
-2.25
Skill > detailY2
4.25
Skill > detailX1
-1.04
Skill > detailX2
35.323
Skill > detailX3
22.155
Skill > detailX4
19.755
Skill > pinX1
-0.225
Skill > pinX2
34.515
Skill > pinY2
1.75

点评

依照你給的數值,轉為Line如下圖,這樣的圖示不能轉為shape [attachimg]102646[/attachimg]  详情 回复 发表于 2015-9-23 10:44
你是不是有顯示錯誤訊息 E- (SPMHDB-187): SHAPE boundary may not cross itself.  详情 回复 发表于 2015-9-23 10:38

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
8#
发表于 2015-9-23 10:38 | 只看该作者
wuyuhe 发表于 2015-9-23 10:33
Skill > detailY1
-2.25
Skill > detailY2

你是不是有顯示錯誤訊息
E- (SPMHDB-187): SHAPE boundary may not cross itself.

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
9#
发表于 2015-9-23 10:44 | 只看该作者
wuyuhe 发表于 2015-9-23 10:33
Skill > detailY1
-2.25
Skill > detailY2

依照你給的數值,轉為Line如下圖,這樣的圖示不能轉為shape

本帖子中包含更多资源

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

x

点评

嗯,我的等级看不到附件 我的目标是想出来这样的SHAPE。  详情 回复 发表于 2015-9-23 10:50

14

主题

143

帖子

-1万

积分

未知游客(0)

积分
-11958
10#
 楼主| 发表于 2015-9-23 10:47 | 只看该作者
嗯,我的等级看不到附件

14

主题

143

帖子

-1万

积分

未知游客(0)

积分
-11958
11#
 楼主| 发表于 2015-9-23 10:50 | 只看该作者
XYX365 发表于 2015-9-23 10:44
依照你給的數值,轉為Line如下圖,這樣的圖示不能轉為shape

嗯,我的等级看不到附件

我的目标是想出来这样的SHAPE。

本帖子中包含更多资源

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

x

点评

找到問題,如下代碼代码  详情 回复 发表于 2015-9-23 11:16
看不到圖片,那可以到我的相冊裡面看嗎? 正常你要轉成下圖,才能轉為shape(ts_line1.jpg) [attachimg]102649[/attachimg]  详情 回复 发表于 2015-9-23 10:57

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
12#
发表于 2015-9-23 10:57 | 只看该作者
wuyuhe 发表于 2015-9-23 10:50
嗯,我的等级看不到附件

我的目标是想出来这样的SHAPE。

看不到圖片,那可以到我的相冊裡面看嗎?
正常你要轉成下圖,才能轉為shape(ts_line1.jpg)

本帖子中包含更多资源

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

x

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
13#
发表于 2015-9-23 11:16 | 只看该作者
wuyuhe 发表于 2015-9-23 10:50
嗯,我的等级看不到附件

我的目标是想出来这样的SHAPE。

找到問題,如下代碼
  1. myPath1 = axlPathStart((list detailX1:detailY1))
  2.           myPath1 = axlPathLine(myPath1 0  detailX2:detailY1)
  3.           myPath1 = axlPathLine(myPath1 0  detailX2:(pinY2+0.635))
  4.           myPath1 = axlPathLine(myPath1 0  (detailX3+0.762):(pinY2+0.635))
  5.           myPath1 = axlPathLine(myPath1 0  (detailX3+0.762):(detailY2+0.762))
  6.           myPath1 = axlPathLine(myPath1 0  (detailX4-0.762):(detailY2+0.762)) ;此線段的x值錯誤
  7.           myPath1 = axlPathLine(myPath1 0  (detailX4-0.762):(pinY2+0.635)) ;此線段的x值錯誤
  8.           myPath1 = axlPathLine(myPath1 0  detailX1:(pinY2+0.635))
  9.           myPath1 = axlPathLine(myPath1 0  detailX1:detailY1)
复制代码




点评

改好了就可以了,真是太感谢你了!  详情 回复 发表于 2015-9-23 11:20

14

主题

143

帖子

-1万

积分

未知游客(0)

积分
-11958
14#
 楼主| 发表于 2015-9-23 11:20 | 只看该作者
XYX365 发表于 2015-9-23 11:16
找到問題,如下代碼

改好了就可以了,真是太感谢你了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-23 07:01 , Processed in 0.067334 second(s), 35 queries , Gzip On.

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

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

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