2009-08-26 9 views
1

Comment puis-je écrire des entités de texte dans un fichier dxf?Exporter vers dxf à partir de Google Sketchup

J'ai trouvé un script qui peut exporter des dessins Sketchup vers des fichiers dxf, malheureusement, il ignorait les calques et le texte. Je l'ai réparé afin qu'il produise le bon calque, mais je n'arrive pas à comprendre comment l'obtenir pour sortir le texte. Je l'ai au point où il apparaît un message quand il vient à travers une entité de texte dans la collection d'entités, mais je ne sais pas comment l'obtenir pour l'écrire correctement dans le fichier.

Répondre

0

Voici comment je l'ai fait.

def dxf_text_output_test 
    $dxf_file = File.new("C:\testfile.dxf" , "w") 
    model = Sketchup.active_model 
    entities = model.entities 
    entities.each do |entity| 
     if(entity.typename="Text") 
      dxf_output_text(entity) 
     end 
    end 
end 

def dxf_ouput_text(text) 
    points = text.point 
    $dxf_file.puts(" 0\nTEXT\n1\n192\n330\n1F\n100\nAcDbEntity\n8\n"+text.layer.name+"\n") 
    $dxf_file.puts("100\nAcDbText\n") 
    if(points == nil) 
     $dxf_file.puts("10\n0.0\n")#x 
     $dxf_file.puts("20\n0.0\n")#y 
     $dxf_file.puts("30\n0.0\n")#z 
    else 
     $dxf_file.puts("10\n"+(points.x.to_f * $dxf_conv).to_s+"\n")#x 
     $dxf_file.puts("20\n"+(points.y.to_f * $dxf_conv).to_s+"\n")#y 
     $dxf_file.puts("30\n"+(points.z.to_f * $dxf_conv).to_s+"\n")#z 
    end 
    $dxf_file.puts("40\n"+(1 * $dxf_conv).to_s+"\n")#text height 
    $dxf_file.puts("39\n"+text.line_weight.to_s+"\n")#thickness 
    $dxf_file.puts("1\n"+text.text+"\n")#text 
end 
1

je dû générer un DXF de mon application rails, je ne pouvais pas trouver un bijou, donc je généré code python, en utilisant le lybrary DXFWriter et python appelé envoyer le code pour générer le fichier DXF, peut-être ça pourrait être une idée utile pour quelqu'un.

def dxf 
    elements = '' 
    params[:_json].second.each do |l| #Lines 
     elements += "drw.add(dxf.line((#{l[:x1]}, #{l[:y1]}), (#{l[:x2]}, #{l[:y2]}), color=1));" 
    end 
    params[:_json].third.each do |a| #Arcs 
     elements += "drw.add(dxf.arc(#{a[:radius]}, (#{a[:left]}, #{a[:top]}), 
        #{(a[:startAngle] * Base::Part::TO_DEG).round(3)}, #{(a[:endAngle] * Base::Part::TO_DEG).round(3)}, color=1));" 
    end 
    file_name = "#{Rails.root}/tmp/#{Dir::Tmpname.make_tmpname([params[:_json].first[:part_name], '.dxf'], nil)}" 
    base_script = "import sys;sys.path.insert(0, '" + Rails.root.to_s + "');from dxfwrite import DXFEngine as dxf;"\ 
        "drw = dxf.drawing('#{file_name}');"\ 
        "#{elements}drw.save()" 

    %x(python -c "#{base_script}") 
    render json: { export_basename: file_name } 
    end