Submitted by Maxence on Tue, 22/03/2016 - 10:47
Aujourd'hui, en examinant un problème sur l'application d'un client, je suis tombé sur quelque chose de bien étrange.
L'application tente de se connecter à AutoCAD en utilisant Marshal.GetActiveObject
de façon à récupérer le nom du document actif comme je l'avais expliqué dans cet article. Mais il semblerait que l'application ne fonctionne pas sur certaines machines.
Submitted by Maxence on Mon, 03/08/2015 - 12:02
Je dois (essayer de) migrer pour un client un complément AutoCAD utilisant l'API .NET vers ZWCAD. ZWCAD est un de ces clones d'AutoCAD qui tentent de reproduire au mieux les fonctionnalités d'AutoCAD pour un prix bien plus modique. ZWCAD dispose d'une API .NET, censée être très largement compatible avec l'API AutoCAD.
Submitted by Maxence on Fri, 31/07/2015 - 12:22
Pour un projet, je dois exporter certaines entités dans un fichier DXF. Sur la classe DBObject
, il y a une méthode DxfOut
qui semblerait adaptée mais elle prend en argument un objet de la classe DxfFiler
qu'on ne sait pas créer (son constructeur prend en argument un pointeur). Donc il faut trouver une approche alternative.
Submitted by Maxence on Thu, 30/07/2015 - 15:05
En général, il est préférable d'éviter d'écrire une méthode avec des paramètres booléens car ce n'est pas très lisible. Supposons par exemple qu'on écrit une méthode qui recherche des entités, avec un paramètre qui permet d'exclure les cercles de la recherche :
IList<Entity> FindEntities(bool ignoreCircles)
{
//...
}
Quand on appelle la méthode, ça donne ceci :
Submitted by Maxence on Mon, 15/06/2015 - 15:13
L'attribut DebuggerDisplay est très utile pour afficher une représentation textuelle explicite d'un type. C'est très utile surtout pour les collections. Pour vos propres types, il suffit d'ajouter l'attribut à votre déclaration de classe. Par exemple:
[DebuggerDisplay("{FirstName} {LastName}")]
public class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
}
Submitted by Maxence on Fri, 07/03/2014 - 17:27
En théorie, c'est faisable avec la commande EXTRACTDONNEES mais le problème c'est que les codes de formatages sont inclus dans les chaînes extraites. Voici donc le code d'une petite commande en C#/.NET :
Submitted by Maxence on Thu, 16/05/2013 - 11:39
Voici le code complet d'une application console en C# qui se connecte à une session Excel existante ou qui en crée une nouvelle si Excel n'est pas en cours d'exécution.
Submitted by Maxence on Wed, 24/04/2013 - 09:56
AutoCAD propose de nombreuses API : ObjectARX, .NET, ActiveX/COM, AutoLISP. Il faut en plus maintenant ajouter l'API Javascript qui est une nouveauté d'AutoCAD 2014. Et parfois, ce qui s'avère très simple dans une des API se révéle très compliqué dans une autre. Prenons par exemple le cas du zoom étendu.
Avec l'API ActiveX et VBA, il suffit de faire :
ThisDrawing.Application.ZoomExtents
Avec l'API .NET, c'est un peu plus compliqué :
Submitted by Maxence on Sat, 27/10/2012 - 09:25
A little bit of code to export the list of Red, Green and Blue values for indexed AutoCAD colors:
[CommandMethod("DUMPCOLORS")]
public void DumpColors()
{
using (var sw = new StreamWriter(@"C:\temp\acadColors.txt"))
{
sw.WriteLine(" I ; R ; G ; B ");
for (short colorIndex = 1; colorIndex <= 255; colorIndex++)
{
using (Color color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex))
{
sw.WriteLine("{0,3};{1,3};{2,3};{3,3}", colorIndex,
color.ColorValue.R, color.ColorValue.G, color.ColorValue.B);
}
}
}
}
Submitted by Maxence on Sat, 27/10/2012 - 09:22
Un petit bout de code pour exporter la liste des valeurs Rouge, Vert, Bleu pour les couleurs indexées d'AutoCAD :
[CommandMethod("DUMPCOLORS")]
public void DumpColors()
{
using (var sw = new StreamWriter(@"C:\temp\acadColors.txt"))
{
sw.WriteLine(" I ; R ; G ; B ");
for (short colorIndex = 1; colorIndex <= 255; colorIndex++)
{
using (Color color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex))
{
sw.WriteLine("{0,3};{1,3};{2,3};{3,3}", colorIndex,
color.ColorValue.R, color.ColorValue.G, color.ColorValue.B);
}
}
}
}
Pages