|
很好!自己解决!我赞同!
其实你的问题是很好解决的,但每个公司规范不一样,Value值的层面也不一样,有的公司是在COMPONENT VALUE/SILKSCREEN;有的是DEVICE TYPE/SILKSCREEN层;也有的在DEVICE TYPE/ASSEMBLY层等等,这样就很乱,可能写出来的程序适合你用,但又不适合其他人用。所以自己解决,适合自己公司规范的程序。
可以用两种方法实现;
其一,用到axlTransformObject函数;axlTransformObject(ldbid, ?move '(100.0, 0.0)) 它的坐标是相对坐标
1.获取器件的坐标;
2.获取器件对应的Ref和Value值信息的坐标;
3.通过comps_center_x - text_center_x ,comps_center_y - text_center_y得到他们在PCB板上面的差值;
4.利用axlTransformObject(txt , ?move list(comps_center_x - text_center_x ,comps_center_y - text_center_y)) 方法移动丝印到器件中心上。
5.从你提供的图片显示好像将这些丝印不是放置在器件中心,而是器件的左上脚和右下脚处。实现的方法就要获取器件的PLACE_BOUND信息了,每个公司对PLACE_BOUND定义是不一样的,正确的PLACE_BOUND大小是反映器件实体大小,但有的lib建库闲麻烦就随意画了一个区域,这样就比较麻烦点了。如果你的lib的PLACE_BOUND建的比较规范,那么就可以axlTransformObject(txt , ?move list(place_bound_x - text_center_x ,place_bound_x - text_center_y)) ;place_bound_x和y可以利用Bbox方法获取左上、左下、右上、右下角的坐标了。
其二,用到axlDBCreateText函数;axlDBCreateText( "Chamfer both sides", 7600:4600,myorient, "board geometry/plating_bar", nil)进行创建文字;它的坐标是绝对坐标。
如果你会编写程序,就很简单的办到了。如果你不会,想自学,及时提供中文教程,学起来都很吃力。就像C++语言一样,教程太多太多,即使看完了书能编出程序很难啊。没有人进行现场指导。
明年深圳在4月份左右会有相应的Skill培训,手把手的讲解,从基础开始,现场给你答解任何问题。
https://www.eda365.com/thread-30907-1-1.html |
|