Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Complex library with lots of problems #13

Open
CarlNobody opened this issue Apr 23, 2023 · 0 comments
Open

Complex library with lots of problems #13

CarlNobody opened this issue Apr 23, 2023 · 0 comments

Comments

@CarlNobody
Copy link

CarlNobody commented Apr 23, 2023

I have a set of libraries from Altium CERN Library, I faced with varieties problems while I'm using this tool by you. I tried to change the code and test, but ending with failure.

Here is some of the library components those can represent the problems.
https://github.com/CarlNobody/Temporary/blob/main/Schlib1.SchLib

Problems list:
a. Alternative part will exist with the normal part in the converted library.
b. Curved object has wrong radius or wrong direction.
c. Designators those have space will lead an error.
d. Sometimes the conversion will failed with the error nil from not existing directory of the altium schematic part.

I‘m not a LUA developer, but I tried to solve them. What I tried for the corresponding problems are:
a. No solutions.
b. Not very good try, but converted library can be used.

 local function parseArc(block, fonts, comp)
    local x = ad2kicad_CoordValue(block['LOCATION.X'])
    local y = ad2kicad_CoordValue(block['LOCATION.Y'])
    local r = ad2kicad_CoordValue(block.RADIUS)
    local startAngle = block.STARTANGLE or 0
    local sweepAngle = block.ENDANGLE or 0
    sweepAngle = sweepAngle - startAngle
    print("startAngle=",startAngle," sweepAngle=",sweepAngle, " r=",r)
    local width = getWidth(block.LINEWIDTH)

   -- Start of additions.
    if (r <60 ) and  ( r>25) and ((tonumber(startAngle) == 270) or (tonumber(startAngle) == 90))then
        r = r - 25
        startAngle = -180+startAngle
    else if( r <= 25) then        
            startAngle = -180+startAngle
        end
    end
   -- Ending of additions.

    local v = toKicadArc(x,y,r,startAngle, sweepAngle, width,"symbol")   
    v.part = block.OWNERPARTID or 0
    local f = block.ISSOLID and block.ISSOLID == 'T'
    v.fill = f and 'f' or 'N'
    v.bbox = BBOX.create(r*2,r*2)
    v.bbox = BBOX.moveTo(v.bbox, x, y)
    comp.graphs[#comp.graphs+1] = v
end

c. Solved the problem.

local function parseText(block,fonts,comp)
    local t = block.NAME or 'user'
    local value = get_str(block, "TEXT")
    local x = ad2kicad_CoordValue(block['LOCATION.X'])
    local y = ad2kicad_CoordValue(block['LOCATION.Y'])
    local rotate = block['ORIENTATION'] or 0
    local hide = false
    local just = tonumber(block.JUSTIFICATION) or 0
    if block.ISHIDDEN and block.ISHIDDEN=='T' then
        hide = true
    end
    rotate = tonumber(rotate) * 90 
    local font = buildFont(block.FONTID, fonts)
    local hJust = ad2kicad_textJustify[just] and ad2kicad_textJustify[just][2] or 'C'
    local vJust = ad2kicad_textJustify[just] and ad2kicad_textJustify[just][1] or 'C'
    if t == 'Designator' then
        value = string.sub(value,1,-2)
        
        -- Start of additions.
        value=string.gsub(value," ", "_")
        -- Ending of additions.  
        
        comp.ref = value == "" and 'U' or value
    end

d.To ensure conversion successfully, nil related components can be skipped.

    if blocks == nil then
        r.toSymbol = nil
        return
    end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant