Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从Google Sketchup导出到dxf_Ruby_Export_Sketchup_Dxf - Fatal编程技术网

Ruby 从Google Sketchup导出到dxf

Ruby 从Google Sketchup导出到dxf,ruby,export,sketchup,dxf,Ruby,Export,Sketchup,Dxf,如何将文本实体写入dxf文件 我发现了一个可以将Sketchup图形导出到dxf文件的脚本,不幸的是它忽略了图层和文本。我修正了它,使它输出正确的图层,但我不知道如何让它输出文本 当它遇到entities集合中的文本实体时,我会弹出一条消息,但我不知道如何让它正确地写入文件。我就是这样做的 def dxf_text_output_test $dxf_file = File.new("C:\testfile.dxf" , "w" ) model = Sketchup.active

如何将文本实体写入dxf文件

我发现了一个可以将Sketchup图形导出到dxf文件的脚本,不幸的是它忽略了图层和文本。我修正了它,使它输出正确的图层,但我不知道如何让它输出文本

当它遇到entities集合中的文本实体时,我会弹出一条消息,但我不知道如何让它正确地写入文件。

我就是这样做的

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 
我就是这样做的

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 

我必须从我的rails应用程序生成一个DXF,我找不到gem,所以我使用lybrary生成了python代码,并调用python发送代码来生成DXF文件,也许这对某些人来说是一个有用的想法

  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

我必须从我的rails应用程序生成一个DXF,我找不到gem,所以我使用lybrary生成了python代码,并调用python发送代码来生成DXF文件,也许这对某些人来说是一个有用的想法

  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