ThinkGeo.com    |     Documentation    |     Premium Support

ThinkGeo.MapSuite.Core.CadFeatureLayer

Hi,



I would like to know if this class will be available soon? and if not what are the alternatives?.



jm.

Hi JM, 
  
 Thanks for your post, here is a sample for CADFeatureLayer: wiki.thinkgeo.com/wiki/Map_Suite_Desktop_Edition_All_Samples#CAD_FeatureLayer, would you please get the latest dll package and try the sample? 
  
 Hope it helps 
  
 Summer

Hi Summer, 
  
 I have my mvc.net from thinkgeo freshly downloaded this morning and the cad layer support is not included… Do you mean that it should be available for me to use by tomorrow morning? 
  
 Thanks. 
  
 I found on your wiki a comment about this feature not delivered …?

Works great now!  thanks so much. 
  
 I have another issue that I am sure you will have an answer for…  The Cad drawing that I am loading is no having a known projection…  then my issue is that I would like to center the screen on drawing but I do not see howto…  any ideas? 
  
 thanks.

Hi Jm, 
  
 Currently, we don’t have support the projection and also I have no idea if is there any projection information can be read out. Now, Would you please try to call the cadLayer.GetBoundingBox() and then set the map extend as the layer boundingbox? if there is anything I misunderstand,please feel free to correct me. 
  
 Thanks, 
 Johnny

Hi Johnny, 
  
 I have a strong case where I have to overlay the CAD on top of a map then my question is when do you think we will have a way to achieve this kind of operation?  if not then any idea on how I could do it?    
  
 do you think that loading the CAD using the cad layer then saving the cad layer as a shape file??? Is this could help with the projection at least until you figure it out just using the cad layer. 
  
 last but no least, could you check and let me know what kind of information could be extracted from a CAD file and then provided to the application, like: text information, feature source columns alike,… 
  
 thanks, 
  
 jm.

Hi Johnny, 
  
 Works only if I set the restriction extent with the bb of the layer. 
  
 Jm.

Hi Jm, 
  
 Currently, the CAD layer is just a preview version and the feature just support to show a CAD file. Many features do not support like projection, edit,get columns etc and there is not a schedule on it at this moment. But I will report those and I hope we can add it into our schedule ASAP. 
  
 Saving the cad layer as s shape file seems like a bright idea at this situation. 
  
 Any questions don’t hesitate to let us know. 
 Thanks, 
 Johnny

Hi Johnny, 
  
 thanks for the information!! 
  
 I would like you to know that for a company like 3M where CADs are used by many organizations it is a big plus to be able just to display CADs drawing on a web page!  now of course I have already asked our CAD organization to provide me some shape files that have been exported from the CAD system and you should see the screen cast that I put together for you what I am speaking all about.  The issues that I face is first not all drawing are set with a projection and second the cost to export to shape files is an issue as well. The first issue of not having a projection could maybe solved if I could move and position the CAD overlay to their real geographical location using Bing or Google…  now the question is also how I could move all the features involved at once and then position them at once as well on top of the satellite picture???  I think also that I could automatically export the CAD layers to shape files from with my application let’s say when the IIS server start using the Global.asax…  I need also to be able to differentiate the layers that are currently involved inside the CAD layer in order to export them by type… I would like to be able to hide or show each layer based on what I want to see like: I want to see only the property line or I want to see buildings but not parking lot…??? 
  
 I have just started a project that will provide GIS capabilities to 7 large organizations inside 3M and  I think that it will take me at least 16 months of development with the first phase. More phases will be put on the road map of this project if the first phase is a success. 
  
 thanks for your support. 
  
 jm         
  
 screen cast: screencast.com/t/Z7C3JL26g9lx

Jean, 


 There is no problem to convert a CAD file to a shape file. What
we need to do is initializing a CadFeatureSource with a given CAD file, and get
all the internal features by calling cadFeatureSource.GetAllFeatures(), and then
loop through the returned features and save it to different shape files
according to the type. So the code would be something like:




CadFeatureSource cadFeatureSource = new CadFeatureSource@"CAD File");
cadFeatureSource.Open();
Collection<feature> features = cadFeatureSource.GetAllFeatures(ReturningColumnsType.AllColumns);
foreach (var feature in features)
{
WellKnownType type = feature.GetWellKnownType();
switch (type)
{
case WellKnownType.Line:
case WellKnownType.Multiline:
// add the feature to line based shapefile;
break;
case WellKnownType.Polygon:
case WellKnownType.Multipolygon:
// add the feature to area based shapefile;
break;
case WellKnownType.Point:
case WellKnownType.Multipoint:
// add the feature to point based shapefile;
break;
default:
break;
}
}

Please be aware that the TEXT within a CAD is converted to
polygon features here. 


 Our engine for now cannot extract out the embedded
projection,  but if the CAD has a prj
file with it we should have no problem open features within that projection. I’m
not exactly sure if the current version support it but I know Summer or Johnny
can add this feature quickly if it’s not there. So if you have a prj file along
with each CAD file, it would then always opened within the expected projection .
You can create a prj file using Map Suite APIs if you’ve known the srid or
proj4 string, by calling the method Proj4Projection.ConvertProj4ToPrj() or
Proj4Projection.ConvertEpsgToPrj(). After having the correct projection, you
should be able to easily display the layer in the center of the screen. If you
want to move all the features within it, which I don’t think you need to, it
can be easily accomplished by setting a custom projection in
CadFeatureLayer.FeatureSource.Projection property.



I know there are tons of info with a CAD file and now we
only extract the info required for drawing, so generally the shapes, styles, texts
(be converted to polygon features as mentioned above) and that’s all. 


 I don’t know if you still have issues about putting the CAD
on top of a map. It should be straightforward as just treat the CAD Layer as a
normal shapefile layer, add it to an overlay and put to the map should then
work.



 Thanks,



Ben



Hi Ben, 
  
 Thanks a lot for the explanations!  I do not have any issues with mapping a CAD Drawing.  However, I would be so happy to be able to get the layers from within a CAD drawing.  Doing so will give the possibility to extract the CAD features using the the example that you gave me and then I could create a set of shape files per layers. This could be more than useful for my current customers if they want to display on the map only let’say the layer with property lines… 
  
 thanks again. 
  
 jm.

JM, 
  
 I’m glad you can do it now. One thing is if we set the CadFeatureLayer.StylingType to StandardStyling and set only the LineStyle to the layer, we are able to only display the lines within a CAD drawing as well. But from the performance standpoint I still suggest you to convert the features to different shape files first and then display those shape files on map.  
  
 Thanks, 
  
 Ben