[Plugin] Dxf_In v2.2 20110517 Dxf2Skp
-
dsct, TestFile.dxf contains 5 3DFACEs. The file doesn't follow the Acad specification and among other things, contains no Dxf header, no indentations for the entity codes, and 3DFACE is written "3dface" in lowercase. It will not open in a AutoCad viewer.
I believe that SU uses ODA's code for reading dxf. This translator, unlike AutoCad's translator contains workarounds for many non conforming entity codes.SUv7/ODA translates TestFile with 10 faces, scale's entities in feet, and locates the model on the ground plane.
Attached is a variant of Dxf_In that will read 3DFACEs in lower case. It translates TestFile.dxf with 5 faces, default scale in inches (may be changed in the options menu), and a elevated z axis. dxf_In_v1.18b.rbI do not know which import is more correct.Unlike the ODA, I am not incline to correct all non conforming entity codes. Because Dxf_In is a SU plugin, these corrections will slow down the program, and be less compatible with future Autocad dxf releases. Having said that, I have made changes to Dxf_In to correct some non conforming entity codes.
I will do further testing, and post any findings here. Where did you get the Dxf from? Hope that the Dxf_In variant helps you.
-
dsct, I have looked hard at TestFile.dxf, and can not find a z coordinate value following its entity code (30, 31, 32, 33) that is "0.0", which would be the case as the image of the SUv7/ODA import suggest.
-
HHF, Give this a try:
Ruby Removed, download from here.
This works with the dxf you supplied. If you come across other dxf files with entities that fail translation, please post them here. Read the application's help, there are some entities that are outside my ability to convert.I hate Dxf, it provides several ways to do the same thing, resulting in increasing the difficulty for 3d party applications to comply. My code is resonably organized, resulting in the attached fix.
-
wirdb, It would take more time then I currently have to modify Dxf_In to include 2d entities no longer supported by Acad. However I will pm you a beta version of Dxf_In_2d for 2d lines, polylines (untested), arcs, and circles. This plugin will not translate those entities into 3d, even if the information is in the file. I will not implement Splines at this time. I hope that it saves you some time in your work. Except for minor fixes, I will not be able to support this plugin.
Addenda:
Freely use, and abuse at your own risk. Fitness of use is not warranty implied. -
honoluludesktop,
Thanks for looking at my application and for the update. I really appreciate your interest and help. I tried the updated plugin on a larger file. It read in a lot of the 3dfaces but gave me a "<Error> Bad 3dface" message for the rest. I've attached a somewhat bigger sample that shows that issue. Any thoughts? It's my understanding that the sample file that I sent, TestFile.dxf, has x,y,z coordinates for all points. Some values are zero. I'm not sure that I understand your comment about the missing z's.
My use has been that of a hobbyist and found that dxf was a man readable format that I could understand and generate myself. I downloaded a guide for dxf and used it to write the files. These files read into SU and I was content with the results. It seems that you have a more definitive (and possibly different) format for dxf. Can you point me to the source for that format. Since I'm generating the file, I can conform and hopefully get the rest of the way there.
Thanks again for your help,
dsct
-
dsct, I looked at the faces that Dxf_In is rejecting and discovered that these faces are not coplaner. The attached image contains the model generated by Dxf_In in black, white, and gray. The blue line is an attempt to create a face from the existing vertices's. If the vertices's of the blue lines are coplanar, a face would be created. Because Dxf_In is a SU Ruby plugin, it seems to tolerates less variation in the vertices's values, then does the ODA translator.
In this case there are two options. One is to improve the accuracy of "Dxf Out"(s) vertex values. The other is to rewrite Dxf_In to create a triangular face from 3 vertex (as ODA does), in place of the 4 vertex 3DFACE that Acad requires. This may take time to do and you may have to wait for a Dxf_In solution. Is it difficult to improve the accuracy of "Dxf Out"? Without doing so, Autocad will not be able to read your Dxf. What may simply be required, is to increase the decimal rounding place. Say, for example, from 7 places (.00000001) to twelve (.000000000001).
The link to the Acad specifications is here. You also need a copy of a AutoCad generated Dxf in order to see some of the formatting that AutoCad requires.
-
Hmmm........Turned out to be easier to rewrite then to explain (as above).>_< Attached is Dxf_In that triangulates non coplaner 3DFACE(s). It is still to your advantage to fix "Dxf Out" in order to maintain compatibility with AutoCad. In addition, ODA/SU7 locates the translated model on SU(s) ground plane, where Dxf_In elevates it as specified. Where is the original model located in reference to the world origin? Btw: please check your pm (private mail).
Can you pm me an image of your model as it is created by your original application? -
This version allows the following non Acad compliant Dxf information to be processed:
01/10/2011 - v 1.20 Convert lower case Dxf entity names to upper case.
01/12/2011 - v 1.22 Triangulate Dxf 3DFACE when not coplaner. -
Perfect plugin to go from GIS to SketchUp when the ArcGIS->Skp6 plugin doesn't work. You've done fantastic work and you should get more recognition for it!
-
I am trying to get topographic contour lines into SU8 as vectors. Illustrator (AI) can "trace" raster images from topo maps very nicely, but then I cannot get the results into SU8.
--I created a simple filled 2-d square in AI,
--exported that as a dxf with the "AutoCAD version 2004/2005/2006" option in the AI export dialog.
--I used your plug-in (my_dxf_In_v1.22.rb) to import this file into SU8,
--and get the SU error "<Error> or Empty File".
--I tried the other export->CAD options from AI to no avail.
--Also, "polylines to faces" or "polylines to edges" made no difference.Any suggestions? Do you think AI is exporting "non-Acad-compliant" dxf?
-
It is possible that AI exports drawing entities that Dxf_In doesn't currently support. Upload the dxf file that fails to import (smaller the better), and I will look at it. Also, describe, or upload a image of the original illustration.
-
Here are 4 files for your experimentation/troubleshooting :
1.the DXF export from (1) DXF export from AI contours
2.png of (1) so you can see what the DXF is supposed to show
3.DXF export from AI of a simple, 2D square - black stroke, white fill. DXF export of filled square
4.screenshot of AI-DXF export settingsThe AI file of topo contours file would not upload; but if you can use it, I could email it to you.
Thanks for the help! -
Sorry for my lack of vocabulary here-- If the splines (curved lines) in AI were converted to a series of small straight line segments, then perhaps they would be Polylines in the dxf?
I was not able to import square.dxf, the same file you imported successfully! Any ideas? Thank you! -
As you probably know, SketchUp can not model curves, and approximates them as a sequence of short connected lines. A spline is a complicated curve, and a polyline is a sequence of connected lines. Btw, Sketchup's basic entities only include faces (planer surfaces) and edges (lines). I am not mathematically fluent, and probably butchered the explanation.
AI exported the topo as Dxf v2004-6 splines. If you use the ODA translator and convert AI's Dxf v2004-6 to Dxf v12, the Dxf splines will convert to a Dxf polyline.
3watersheds-topo-SIMPLE-v12.dxf
The image I posted above is an example of that. Because AI incorrectly tags the splines as closed, the exported topo line are closed. That however, can be easily corrected in SketchUp as below.
If you can get AI to export the topo as Dxf v12, the topo will export as polylines. I did not see this option on your image of the AI menu. In addition, if AI can export the topo as either Dxf lines, polylines, arcs, or lwpolylines, Dxf_In will be able to import them into SketchUp. However, I did not see these options in the AI menu either.I don't know why you are unable to import square.dxf, did you get any error messages? If so, screen capture the messages and post them here. If you did not get any error messages, open Sketchup, from the SketchUp menu select Window > Ruby Console. Then attempt to import square.dxf. If you get an error message in the Ruby Console, screen capture that message and upload it here.
-
gwied, I have looked at 3watersheds-topo-SIMPLE.dxf, and found that it consist of splines. Dxf_In doesn't support splines at this time, and unfortunately, I will not be able to add it to the translator any time in the near future.
I understand that Dxf v12 writes splines as ploylines. ODA provides a Dxf/Dwg translator here that will convert your Dxf v2000+ into Dxf v12. Dxf_In can then be used to import Dxf v12 into SketchUp. Select Dxf_In option: polylines to edges.
Dxf_In will however, translate the entities in square.dxf.See the help option for a list of entities that Dxf_In supports.
-
Hmmmm..........In regards to square.dxf, I just noticed that your OS, and hardware are Mac. I don't believe that I have ever had a request for support from a Mac user before. Perhaps that is the problem. Plugins that run on a PC do not always run in a Mac (as well as the other way around). For me to attempt to solve this kind of problem, it would help to have the error message that is reported in the Ruby Console. Perhaps fortunately, the ODA translator support specific Mac OS's. You need to verify it with your OS.
-
@unknownuser said:
I always wonder when there are no replies yet a bunch of downloads, why those who downloaded don't take (or have?) the time to send some love to the author. I have no use for this plugin, but here's some love.
awesome work on that plugin!
-
Hi,
I'm a bit new to Sketchup, but have used other CAD packages in the past. I was wanting to load a DXF file into Sketchup, but as 8.0 doen't have a DXF importer I looked at other options, this seemed the best.I have just downloaded dxf_in_v1.18c, copied it and pasted it with other plugins
It seems to start ok asks for the settings
Help options:
Import unit:
Select Origin:
Polylines:
Materials:
which I set to None, Millimetres, Model's, to Faces; by Number, and after it failed tried the AmericanFlag1.dxf from Jim's lots of DXF files (earlier in this topic) and still get the same problem, even changing some of the settings I still get the same problem, a Sketchup dialog stating <Error> or empty fileThe import runs through stages1 and 2 with an indicator running across the bottom of the screen, so I assume it is reading the .dxf file OK. Have I set something up wrong?
I couldn't find an older version of dxf_in to see if there was any difference.Any advice or comments greatly appreciated.
Chris
-
Chris, There are 3 things you can do. First download (from the first post in this topic), and use the current version Dxf_In v1.22. If that fails, post the problem "AmericanFlag1.dxf" here so that I can examine the file (In the post a reply window, "upload attachment" tab is located on the left side, below the reply box). I see that you use a Mac. I have never tested the plugin on a Mac. Plugins that run on PC may not run on Macs, or the other way around. For me to fix a Mac related problem, I need your help. Open sketchup, turn on the "Ruby Console", run Dxf_In, then copy the error message from the Ruby Console, and upload it here.
In any case, upload "AmericanFlag1.dxf" for me to look at, I was unable to find it in Jim's earlier link.
-
Hi, I have been doing some tests and have discovered that the Mac appears to be bringing the data from the file with a Carriage Return Line Feed termination, and as such was not being recognised. I found the following modification made a huge difference
#get all block names, save them along with their location aFile = File.open(chosen_file, "r") aFile.each_line do |line|
line=line.chomp+"\n" #strip CRLF and replace with LF
count = count +1
if count == odd_number #strip dxf tags thanks to TIG
odd_number = odd_number + 2
line = line.strip
endI will try this on the current version. As far as I can see from my studying of Ruby that alteration should not affect running under Windows as it will strip any terminations from the line and then replace it with the LineFeed value used everywhere else in the code.
The fix allowed me to load the "AmericanFlag1.dxf", I got some bad polyline error, but it did complete the loading and could be seen in Sketchup.
It is here and I will test the new version against it and try and capture the message from the Ruby console.Chris
Advertisement