如何將文本實體寫入dxf文件?從Google Sketchup導出到dxf
我發現了一個腳本,可以將Sketchup繪圖導出到dxf文件,不幸的是它忽略了圖層和文本。我修正了它,所以它輸出適當的圖層,但我無法弄清楚如何讓它輸出文本。
當它遇到實體集合中的文本實體時,它會彈出一條消息,但我不知道如何讓它將它正確地寫入文件。
如何將文本實體寫入dxf文件?從Google Sketchup導出到dxf
我發現了一個腳本,可以將Sketchup繪圖導出到dxf文件,不幸的是它忽略了圖層和文本。我修正了它,所以它輸出適當的圖層,但我無法弄清楚如何讓它輸出文本。
當它遇到實體集合中的文本實體時,它會彈出一條消息,但我不知道如何讓它將它正確地寫入文件。
這就是我做到的。
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,我無法找到一個寶石,所以我生成Python代碼,使用lybrary DXFWriter,叫蟒蛇發送代碼來生成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