Publié par Maxence le mar, 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.
Publié par Maxence le lun, 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.
Publié par Maxence le ven, 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.
Publié par Maxence le jeu, 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 :
Publié par Maxence le lun, 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; }
}
Publié par Maxence le ven, 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 :
Publié par Maxence le jeu, 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.
Publié par Maxence le mer, 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é :
Publié par Maxence le sam, 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);
}
}
}
}
Publié par Maxence le sam, 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