Quantcast
Channel: Cadence PCB Skill Forum
Viewing all 2171 articles
Browse latest View live

find shape center

$
0
0

Hi

Problem is solved, please disregard this message

Best regards

Ole


Find ext_artwork and ext_drill

$
0
0

I'm looking for a way in Skill to extract the setup information for artworks and drill files.  Cadence sets the default values of art (ext_artwork) and drl (ext_drill).  I've written a program to setup the artwork table in the Allegro file but since we use the Cadence default values and or sister company uses different values I would like to know how to extract the values directly from the database.

Hopefully somebody knows how and can point me in the right direction.

 Many thanks in advance! 

getting the active command

$
0
0

Hi

I'm working on a small skill program that should only be available during "add connect", but I've not figured out a way to get the active command in skill

Using axlGetCmdSupplementalData() will show "add connect" as the command using pre-selection mode, but if the user selects  

Route->Connect then it will return nil as the command. This is also in alignment with the description for axlGetCmdSupplementalData()

But does anyone know if there's a way to get the name of the active command?

Best regards

Ole

Modify film_reorder.il

$
0
0

I have been looking at the program "film_reorder.il" (available at cadence.com) and have found it useful but would like to make a small modification to it.  After you have selected a layer to be moved (up or down) in the list you have to re-select it if you want to move it more than one position.  Does anyone know of a way to modify this program so the selected layer stays selected until another layer is selected?  I would like to just click the up/down arrow X times until it is moved into the correct position without having to keep re-selecting the layer.

Thanks!

Refdes Attribute ?

$
0
0

 Hi !

I want to get some atrtibute of refdes, such as rotation, xy, textBlock , isMirrored ( ex: refdes-> rotation), but i don't find any  function to do that. there is only  Text Attribute. How can i do it? Please help me?

Tks.

Luan.

Check Parallel lines if intersect

$
0
0

 

Image and video hosting by TinyPic

given image above,

I would like to check both segments (maroon/orange line could be in any slope value) which are parallel to each other if they intersect.

dashed lines are the perpendicular lines of the maroon or of the orange line (my plan is to use these to get the intersections) .

The problem now is, how can i get the points of the perpendicular lines.

Im welcome for other suggestions.

v163: how to change the capture image's size?

$
0
0
I use allegro v16.3 to capture the current screen's status, but the capture image's size is too large for me, and is there any other argument or method to change the size? I can not change the Editor's size by "trapsize". so any suggestion? thanks for your kindly help!

Help setting the rotation Angle for dynamic buffer.

$
0
0

Doing some simple move dynamics and would like to rotate the objects and would like to set the angle increment to 5 degrees. I'm using the command  (axlSetRotateIncrement ?angular 5) and it does not appear to be working. Any help would be appreciated.

Vince


Modifying ns_gerber.il

$
0
0

 Hi,

I am trying to modify the ns_gerber.il to add some extra layers to the conductor films. My if-then statements seem to work ok for the TOP and BOTTOM layers but I cannot get the inner layers to work. If you look at the commented out lines in the code below you can see my various attempts using else, != and using layer names directly. Any help telling me where I am going wrong greatly appreciated.
Jim O'Mahony

; get conductor layers
my_layers = axlGetParam("paramLayerGroup:etch")
etchcount = 0
i = 0
foreach(layer my_layers->groupMembers
layerparams = axlLayerGet(strcat("ETCH/" layer))
if(layerparams->type=="PLANE" && layerparams->drcPhotoType=="negative" then
pm = 0 ; plot mode negative
else
pm = 1 ; plot mode positive
)

if(layer=="TOP" then tex = strcat("Texttop")

else tex=strcat("Text" layer))

;if(layer=="L1" then tex = strcat("Text" layer))
;if(layer=="L2" then tex = strcat("Text" layer))
;if(layer!="TOP" then tex = strcat("Text" layer)

if(layer=="BOTTOM" then tex = strcat("Textbot"))

 

sprintf(film_name "%d_%s" ++i layer)
ld1 = strcat("VIA CLASS/" layer)
ld2 = strcat("PIN/" layer)
ld3 = strcat("ETCH/" layer)

tc = strcat("BOARD GEOMETRY/TOOLING_CORNERS")
texlayer = strcat("BOARD GEOMETRY/" tex)

data_list = (list ld1 ld2 ld3 tc texlayer)
param_list = (list 0 0 0 ulw sbb pm 0 0 0 0 0 1 1)
(axlfcreate film_name param_list data_list)
++etchcount)

Logomaker error

$
0
0

 I just recently upgraded to 16.6 and found the logomaker software in my directory.  I cannot seem to get the function working.  My settings are:

LFC_PATH = C:\Cadence\setup\LEADCMD
POTRACE_PATH = C:\Cadence\setup\potrace-1.8.win32-i386
PATH = C:\Cadence\SPB_16.6\tools\bin

envpath = C:/Documents and Settings/Mario_c/pcbenv C:/Cadence/SPB_16.6/share/pcb/text
allegro_pcbenv = C:\Documents and Settings\Mario_c\pcbenv

logoMaker_public.il is located at C:\Cadence\setup\skill

allegro.ilinit is located at C:/Documents and Settings/Mario_c/pcbenv

 

 Any thoughts would be appreciated

 

Example Skill Tutorial

$
0
0

Hi

i have found following code on http://www.referencedesigner.com/tutorials/allegro/allegro_skill_76.php

Is it possible to read the les4.form from the advanceform.il file?

Thanks for your help

 

Jürgen

 

 


axlCmdRegister( "advanceform" `advanceform)
; -----------------------------------------------------------------
procedure( advanceform()

	les4_form = axlFormCreate( (gensym) "les4.form" nil 'les4_form_Action t)
	axlFormDisplay(les4_form)

); end of procedure
; -----------------------------------------------------------------
procedure( les4_form_Action(les4_form)
	case( les4_form->curField

		("Close_button"
        	axlFormClose( les4_form )
		 	axlCancelEnterFun( )
      	); --------------------------

 		("Run_button"
			les4_form_run()
      	); --------------------------	
	); end case
); end of procedure

; -----------------------------------------------------------------
procedure( les4_form_run()
	; Create output file to write report
	cl_file = outfile("check_list.rpt" "w")

		; ------ Print Header 
		fprintf(cl_file "**********************\n")
		fprintf(cl_file " Check List Report\n")
		fprintf(cl_file "**********************\n\n")
		axlUIWPrint(les4_form getCurrentTime())

		; ------  Print CurrentTime
		fprintf(cl_file "CurrentTime : %s \n" getCurrentTime())

		; ------  Print Designer Name
		fprintf(cl_file "PCB Designer Name : %s \n" axlFormGetField( les4_form "name"))

		; ------  Print Design Name
		fprintf(cl_file "Design Name : %s \n" axlCurrentDesign())

		; ------ Print value of check box
		if( axlFormGetField(les4_form "check1") then check = "YES" else check = "NO" ); end if 
		fprintf(cl_file "Do you check DRC? : %s \n" check)		

		; ------ Print	value of popup
		fprintf(cl_file "Exist SMD in this project : %s \n" axlFormGetField( les4_form "pop1"))

		; ------ Print	value of slidebar
		fprintf(cl_file "Layers number : %d \n" axlFormGetField( les4_form "slidebar1"))

		; ------ Print value of group
		if( axlFormGetField(les4_form "both") then 
			silk_side = "Both" 
		else 
			if( axlFormGetField(les4_form "top") then silk_side = "Top" else silk_side = "Bottom" ); end if 
		); end if 
		fprintf(cl_file "Silk exist on : %s \n" silk_side)
		; ------
	close(cl_file)
); end of procedure
; -----------------------------------------------------------------



Now creat another file called les4.form with the following content


 FILE_TYPE=FORM_DEFN VERSION=2
FORM
FIXED
PORT 40 40
HEADER "Check List Report"

#=== must define popup before using
POPUP "Yes" "Yes" , "No" "No" .

TILE
#========== using STRFILLIN
TEXT "PCB Designer Name"
FLOC 1 1
ENDTEXT

FIELD name
FLOC 20 1
STRFILLIN 15 20
ENDFIELD
#========== using CHECKLIST
TEXT "Do you checked  DRC?"
FLOC 1 5
ENDTEXT

FIELD check1
FLOC 20 5
CHECKLIST "Yes"
ENDFIELD
#========== using POPUP
TEXT "Exist SMD in this project"
FLOC 1 10
ENDTEXT

FIELD pop1
FLOC 20 10
ENUMSET 6
POP "pop1"
ENDFIELD
#========== using INTSLIDEBAR
TEXT "Layers number"
FLOC 1 15
ENDTEXT

FIELD slidebar1
FLOC 20 15
INTSLIDEBAR 2 2
MIN 2
MAX 30
ENDFIELD
#========== using GROUP
TEXT "Silk exist on"
FLOC 1 20
ENDTEXT

GROUP ""
GLOC 18 18
GSIZE 22 5 
ENDGROUP

FIELD top
FLOC 19 20
CHECKLIST"Top" "grp"
ENDFIELD

FIELD bottom
FLOC 25 20
CHECKLIST "Bottom" "grp"
ENDFIELD

FIELD both
FLOC 33 20
CHECKLIST "Both" "grp"
ENDFIELD
#========== using MENUBUTTON

FIELD Run_button
FLOC 2 27
MENUBUTTON "Run" 7 3
ENDFIELD

FIELD Close_button
FLOC 11 27
MENUBUTTON "Close" 7 3
ENDFIELD

#======================
ENDTILE

ENDFORM

Fillet shape ?

$
0
0

 Hi all!

 I'm trying to write a code to check fillet , but I don't know how to know  if a shape is "fillet shape". My version is 16.3( in this, when i show element fillet shape => "Shape is fillet"). Pls help me ?

thanks

Luan.

Inner Point of a PIN

$
0
0

Dear All,

 Can anyone help me how to get the Pin inner point area if I only have the dbid of the pin.

 sample3

autosilkUtils.il

$
0
0

 Hi All:

Hopefully Dave Elder reads this ?

I am running Allegro 16.5  S018 and tried to run the autosilkUtils.il SKILL script.

Everything seems to work except it does not put the DRCs into the walker popup window.

Hopefully someone can fix this ?

This is a great tool

Thanks,

Les

Browsing file to pre-defined path location

$
0
0

Hi,

 Is there any function to browse files to a particular fixed location like "C:\Pawan\Temp"?

I am using a combination of changeWorkingDir and axlDMFileBrowse function but not able to do so properly

-Pawan


changing rectangular shape type to dynamic

$
0
0

Hi,

 I encountered a problem on converting shape type to dynamic using axlShapeChangeDynamicType.

the code looks somthing like this:

 shape = axlDBCreateRectangle(list(0:0 100:100), t, "etch/pwr01" nil )

axlShapeChangeDynamicType(car(shape) t t)

When I input the following, static shape is created but when i try to change it to dynamic type it returns nil and the shape is not changed to dynamic. I tried using the same code to other shape(other than rectangular) but it works well.

List operation

$
0
0

Hi,

I would like to know the difference in between these two statements 

'(1 2)

list(1 2)

I tried to run the attached listOp.il file and it showed some unexpected behavior for me.

Thanks,

Pawan

"Design cross section Report"

$
0
0

Hi all

Is there any way by which we can have "Design cross section Report" in Allegro 16.3 PCB editor?

Regards

Nayyier

Shape Outside Segment

$
0
0

Dear All,

Can anyone help me how to get the outside segment of a shape...

Inside segment will be disregard. Thanks

image 2

How to multiple select on GRID?

$
0
0
How to make multiple select for grid... working on LIST but how to do it on GRID?
Viewing all 2171 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>