¿Cómo utilizar el control OLE para conectarse al software CAD y mostrar gráficos CAD en la versión VB2010? Te daré un código.
vb2010 (vb.net) parece no tener control OLE
El siguiente código utiliza el control PictureBox para mostrar archivos CAD DWG. ¿Privado? ¿Estructura?BITMAPFILEHEADER
¿Dim?bfType?As?Short
Dim?bfSize?As?Integer
Dim?bfReserved1?As?Short
Dim?bfReserved2?As?Short
¿Dim?bfOffBits?As?Integer
¿Fin?StructurePublic?Function?GetDwgImage(ByVal?FileName?As?String)?As?Image
¿Si? No ?File.Exists(FileName)?Then?Exit?Function
Dim?DwgF?As?FileStream' flujo de archivos
Dim?PosSentinel?As?Integer?' Ubicación
Dim?br?As?BinaryReader?'Leer archivo binario
Dim?TypePreview?As?Integer?'Formato de miniatura
Dim?PosBMP ?As ?Entero?'Posición de la miniatura
Dim?LenBMP?As?Entero?'Tamaño de la miniatura
Dim?biBitCount?As?Short?'Profundidad de bits de la miniatura
p>
Dim?biH?As?BITMAPFILEHEADER?'Encabezado de archivo BMP, el archivo DWG no contiene encabezado de archivo de mapa de bits, debe agregarlo usted mismo
Dim?BMPInfo()?As?Byte? 'Cuerpo del archivo BMP contenido en el archivo DWG
Dim?BMPF?As?New?MemoryStream?' Flujo de archivo de memoria que guarda mapas de bits
Dim?bmpr?As?New?BinaryWriter (BMPF) )?'Escribir clase de archivo binario
Dim?myImg?As?Image
Pruebe
DwgF?=?New?FileStream(FileName,?FileMode .Open ,?FileAccess.Read)'Secuencia de archivos
br?=?New?BinaryReader(DwgF)
DwgF.Seek(13,?SeekOrigin.Begin)?'A partir de trece bytes leyendo
PosSentinel?=?br.ReadInt32?' Los bytes 13 a 17 indican la ubicación del bloque de descripción en miniatura
DwgF.Seek(PosSentinel? ? 30,?SeekOrigin.Begin) ?'Mover el puntero al byte 31 de la descripción de la miniatura blockTypePreview?=?br.ReadByte?'El byte 31 es la información del formato de la miniatura, 2? es el formato BMP, 3 es el formato WMF
¿Seleccionar? Case?TypePreview
Case?1Case?2,?3
PosBMP?=?br.ReadInt32?' Mapa de bits guardado en archivo DWG Ubicación
LenBMP?= ?br.ReadInt32?
'El tamaño del mapa de bits
DwgF.Seek(PosBMP? ?14, ?SeekOrigin.Begin)?'Mover el puntero al bloque de mapa de bits
biBitCount?=?br.ReadInt16 ?'Leer Obtener la profundidad de bits
DwgF.Seek(PosBMP,?SeekOrigin.Begin)?' Leer todo el contenido del mapa de bits desde el principio del bloque de mapa de bits para su uso posterior
BMPInfo ?=?br.ReadBytes (LenBMP)?' no contiene la información del mapa de bits del encabezado del archivo
br.Close()
DwgF.Close()
Con?biH?' Crear encabezado de archivo de mapa de bits
.bfType?=?amp;H4D42
If?biBitCount?lt;?9?Then?.bfSize?=?54 ?4?*?( 2?^?biBitCount)? ?LenBMP?Else?.bfSize?=?54? p>.bfReserved2?= ?0?'Bytes reservados
.bfOffBits?=?14?amp;H28?'1024?'Desplazamiento de datos de imagen
Fin?Con p>
'Empiece a escribir el encabezado del archivo de mapa de bits a continuación
bmpr.Write(biH.bfType)?'Tipo de archivo
bmpr.Write(biH.bfSize)?'Archivo tamaño
p>bmpr.Write(biH.bfReserved1)?'0
bmpr.Write(biH.bfReserved2)?'0
bmpr.Write( biH.bfOffBits)? 'Desplazamiento de datos de imagen
bmpr.Write(BMPInfo)?'Escribir mapa de bits
BMPF.Seek(0,?SeekOrigin.Begin)?'El puntero se mueve a el comienzo del archivo myImg?=?Image.FromStream(BMPF)?'Crear un objeto de archivo de mapa de bits
Return?myImg
bmpr.Close()
BMPF.Close( )
¿Fin?Seleccionar
¿Catch?ex?As?Exception
¿Devolver?Nada
¿Fin?Probar ?
¿Fin?Función