-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
209
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
Le volume est: 10268981504.6
-
Salut, Je trouve ça scandaleux. Pôle Emploi ne se préoccupe que de statistiques et placer des gens en formation fait baisser d'autant le nombre de demandeurs d'emploi, si en plus on peut le faire à moindre coût... Du point de vue du formateur (je l'ai été) je ne pense pas qu'on puisse offrir une prestation de qualité dans ces conditions (sans vouloir minimiser les compétences de Christian) en tout cas pas de la même qualité qu'avec des groupes plus homogènes. En gros, au lieu de faire deux formations on n'en fait qu'une (et n'est payé que pour une) malgré le fait que ça demande globalement plus de travail. Du point de vue des stagiaires, je l'ai été aussi et j'aurais vraiment considéré ça comme du foutage de gueule de n'avoir le formateur qu'à mi-temps et qu'il ne soit pas disponible pour m'aider pendant mes travaux pratiques.
-
Salut, Seuls AutoCAD Architecture, AutoCAD MEP (et peut-être Civil 3D, mais je ne suis pas certain) permettent de paramétrer des unités de longueurs pour l'espace objet (avec la commande DWGUNITS). AutoCAD classique (Vanilla) et les autres verticaux n'utilisent que des "unités d'insertion" (paramétrables avec les variables systèmes INSUNITS, INSUNITSDEFSOURCE et INSUNITSDEFTARGET) qui servent à mettre automatiquement à l'échelle les blocs insérés. En dehors de ça, il n'y a pas de correspondance entre une unité de dessin en espace objet et les unités métriques (ou impériales) qui soit liée au dessin. Dans ces versions, la commande -DWGUNITS existe aussi mais ne sert qu'à créer un dictionnaire pour stocker ces données dans une optique de compatibilité avec les logiciels AEC mais sans les utiliser. Donc ce que tu dis dépend du type d'AutoCAD que tu utilises et de ce que entend par : "je les ai tous mis en centimètre". Si tu ne précises pas ça, je crains que personne ne puisse te donner une réponse pertinente.
-
Encore un petit soucis de transformation
(gile) a répondu à un(e) sujet de coyotte dans ObjectARX/DBX, C++, .NET, RealDWG
line.TransformBy(ed.CurrentUserCoordinateSystem.Inverse()); devrait fonctionner. -
Encore un petit soucis de transformation
(gile) a répondu à un(e) sujet de coyotte dans ObjectARX/DBX, C++, .NET, RealDWG
Raté! ;) Comment ? en les ajoutant directement à l'espace courant par programmation ou en utilisant la commande _LINE ? Tu veux transformer les entités Line du SCU vers le SCG ou traduire les coordonnées de points de départ et de fin des lignes due SCU vers le SCG sans modifier les lignes ? Ça serait tellement plus simple si tu postait un extrait significatif de ton code... -
Par contre, dans le Readme du hotfix, il ne disent pas de "débloquer"* le zip avant d'extraire les DLLs. Pour ma part, je recommanderais de toujours "débloquer" un zip téléchargé depuis internet (a fortiori s'il contient des DLLs). * clic droit > Propriétés > onglet Général > Débloquer
-
Oui! Merci Steven! Ça repose d'entendre de lire autre chose que les sempiternels "râlages" à chaque sortie d'une nouvelle version...
-
Salut, La commande native APLANIRGEOM gère très bien les solides 3d.
-
Import/Export d\'attributs avec Excel
(gile) a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
Voir ici. -
Pour les amateurs, vous pouvez télécharger et installer PolylineOverruleSetup.msi. Le plugin est compatible à partir de AutoCAD 2013. Deux commandes SEGLEN_OVERRULE_ON et SEGLEN_OVERRULE_OFF pour respectivement activer ou désactiver l'overrule sur les polylignes sélectionnées. Les commandes sont accessibles depuis le menu contextuel quand seulement des polylignes sont sélectionnées : Polyligne overrule > Actif > inactif La hauteur de texte et le nombre de décimales affichées sont tirés des valeurs de TEXTSIZE et LUPREC au moment de la création du lancement de SEGLEN_OVERRULE_ON (on peut modifier ces valeurs a posteriori et relancer la commande).
-
Isolation surface et création de fichier détaillé
(gile) a répondu à un(e) sujet de Archi-plans.com dans AutoCAD 3D
Salut, Comme l'a dit didier, le principal problème vient du type d'entité (Surface). Comme les solides 3d ou les régions, ces objets n'exposent leur géométrie (et encore, uniquement les contours) qu'avec .NET ou ObjectARX. Ce que tu demandes n'est donc pas une petite bricole et demanderait à un développeur .NET ou ObjectARX d'y passer plusieurs heures. -
[Résolu] Suppression des 6 caractères à gauche d'un string
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut, Pour supprimer les 6 premiers caractères d'une chaine : (substr "\pxqc;4224408001\PChaufferie Urbaine" 6) Pour les formatages de MText, tu as mal cherché, il y a plusieurs routines notamment le puissant StripMtext. -
Salut, Si tu parles bien du plugin Increment, il n'y a pas de tolérance dans la comparaison des coordonnées (on compare donc à la 15ème ou 16ème décimale).
-
Je rappelle juste ce que je répondais à Patrick réponse #5 : les textes ne sont affichés que si l'extension (DLL) est chargée, sinon, la polyligne s'affiche normalement. Donc transmettre un fichier suppose de transmettre aussi l'extension et de l'installer. Il existe de nombreux LISPs qui le font en ajoutant des entités texte (CF SegLen) ce qui simplifie l'échange de fichiers.
-
Merci. C'était juste un exemple, pas vraiment suffisamment abouti pour être publié.
-
Conversion ucs en wcs
(gile) a répondu à un(e) sujet de coyotte dans ObjectARX/DBX, C++, .NET, RealDWG
Salut, La question n'est pas très précise. Tout d'abord, la notion de SCU n'est exploitable que pour le SCU courant ou un un SCU enregistré. Contrairement à un objets 2d comme un arc, un cercle, une polyligne, un texte, etc. une ligne est objet 3d qui n'est donc pas liée à un plan (autrement dit à un SCO). Toutefois, le type Line a une propriété Normal qui semble correspondre (je n(en suis pas sûr) au vector normal du plan du SCU courant lors de la construction de la ligne. On peut donc créer un plan parallèle à celui-ci pour construite une matrice avec Matrix3d.PlaneToWorld. var plane = new Plane(Point3d.Origin, line.Normal); line.TransformBy(Matrix3d.PlaneToWorld(plane)); Ceci dit, s'il s'agit du SCU courant, la matrice de transformation entre le SCU courant et le SCG s'obtient avec la propriété Editor.CurrentCoordinateSystem. Pour un SCU enregistré (UCSTableRecord), on peut reconstituer une matrice depuis ses propriétés. -
Non, ça n'est pas persistant, il faut que l'application qui définit l'objet Overrule soit chargée. Et c'est plus proche d'un objet personnalisé (comme on peut en faire avec ObjectARX) que d'un réacteur (ou un gestionnaire d'évènement). Si elle n'est pas chargée, la polyligne est affichée "normalement".
-
Salut, Juste pour le fun. Les objets overrule permettent "d'outre-passer" l'affichage des entités AutoCAD, on peut, par exemple ajouter du texte à une polyligne* pour afficher dynamiquement les longueurs des segments, et ce, avec un code relativement concis. * les textes font partie intégrante de la polyligne La définition de l'overrule : using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.GraphicsInterface; using AcDb = Autodesk.AutoCAD.DatabaseServices; namespace LabelPolylineOverruleSample { class LabelPolylineOverrule : DrawableOverrule { TextStyle textStyle; public LabelPolylineOverrule() { textStyle = new TextStyle() { FileName = "Arial", TextSize = 2.5 }; } public override bool WorldDraw(Drawable drawable, WorldDraw wd) { var pline = (AcDb.Polyline)drawable; var nbSegments = pline.Closed ? pline.NumberOfVertices : pline.NumberOfVertices - 1; var point = default(Point3d); var direction = default(Vector3d); string text = null; for (int i = 0; i < nbSegments; i++) { if ((int)pline.GetSegmentType(i) < 2) { switch (pline.GetSegmentType(i)) { case AcDb.SegmentType.Line: var line = pline.GetLineSegmentAt(i); point = line.MidPoint; direction = line.Direction; text = line.Length.ToString("0.00"); wd.Geometry.WorldLine(line.StartPoint, line.EndPoint); break; case AcDb.SegmentType.Arc: CircularArc3d arc = pline.GetArcSegmentAt(i); var startParam = arc.GetParameterOf(arc.StartPoint); var endParam = arc.GetParameterOf(arc.EndPoint); point = arc.EvaluatePoint((startParam + endParam) / 2.0); direction = arc.StartPoint.GetVectorTo(arc.EndPoint).GetNormal(); text = arc.GetLength(startParam, endParam, 0.0).ToString("0.00"); wd.Geometry.CircularArc(arc.StartPoint, point, arc.EndPoint, ArcType.ArcSimple); break; default: break; } if (direction.X < 0) direction = direction.Negate(); var extents = textStyle.ExtentsBox(text, false, false, wd); point -= direction * (extents.MaxPoint.X - extents.MinPoint.X) / 2.0; point += direction.GetPerpendicularVector() * 1.25; wd.Geometry.Text(point, pline.Normal, direction, text, false, textStyle); } } return true; } } } Une commande de test : using Autodesk.AutoCAD.ApplicationServices.Core; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; namespace LabelPolylineOverruleSample { public class Commands { static LabelPolylineOverrule overrule; static string regAppName = "LABEL_POLYLINE"; static Commands() { overrule = new LabelPolylineOverrule(); Overrule.AddOverrule(RXObject.GetClass(typeof(Polyline)), overrule, false); overrule.SetXDataFilter(regAppName); Overrule.Overruling = true; } [CommandMethod("TEST")] public static void Test() { var doc = Application.DocumentManager.MdiActiveDocument; var db = doc.Database; var ed = doc.Editor; var options = new PromptEntityOptions("\nSelect polyline: "); options.SetRejectMessage("\nSelected object is not a polyline."); options.AddAllowedClass(typeof(Polyline), true); var result = ed.GetEntity(options); if (result.Status != PromptStatus.OK) return; using (var resBuf = new ResultBuffer(new TypedValue(1001, regAppName), new TypedValue(1000, "Dummy text"))) { AddXdata(result.ObjectId, resBuf, db); } } private static void AddXdata(ObjectId id, ResultBuffer resBuf, Database db) { using (Transaction tr = db.TransactionManager.StartTransaction()) { var regAppTable = (RegAppTable)tr.GetObject(db.RegAppTableId, OpenMode.ForRead); if (!regAppTable.Has(regAppName)) { var regApp = new RegAppTableRecord() { Name = regAppName }; regAppTable.UpgradeOpen(); regAppTable.Add(regApp); tr.AddNewlyCreatedDBObject(regApp, true); } var pline = (Polyline)tr.GetObject(id, OpenMode.ForWrite); pline.XData = resBuf; tr.Commit(); } } } }
-
Encadrement d'un textmult
(gile) a répondu à un(e) sujet de coyotte dans ObjectARX/DBX, C++, .NET, RealDWG
Salut, Le type MText fournit les propriétés ActualWidth et ActualHeight qui correspondent respectivement à la largeur et la hauteur de la boite englobant le texte. En combinant ces valeurs avec le point d'attachement (Location) et la justification (Attachment) on peut reconstituer le rectangle englobant, en intégrant, bien sûr, une éventuelle Rotation. Ci-dessous, une méthode d'extension qui renvoie les points (SCG) des coins de ce rectangle (bas_gauche, bas_droit, haut_droit, haut_gauche). public static Point3d[] GetMtextBoxCorners(this MText mtext) { Vector3d disp = new Vector3d(); double width = mtext.ActualWidth; double height = mtext.ActualHeight; switch (mtext.Attachment) { case AttachmentPoint.BottomRight: disp = new Vector3d(-width, 0.0, 0.0); break; case AttachmentPoint.BottomCenter: disp = new Vector3d(-width / 2.0, 0.0, 0.0); break; case AttachmentPoint.BottomLeft: default: break; case AttachmentPoint.MiddleRight: disp = new Vector3d(-width, -height / 2.0, 0.0); break; case AttachmentPoint.MiddleCenter: disp = new Vector3d(-width / 2.0, -height / 2.0, 0.0); break; case AttachmentPoint.MiddleLeft: disp = new Vector3d(-width / 2.0, 0.0, 0.0); break; case AttachmentPoint.TopRight: disp = new Vector3d(-width, -height, 0.0); break; case AttachmentPoint.TopCenter: disp = new Vector3d(-width / 2.0, -height, 0.0); break; case AttachmentPoint.TopLeft: disp = new Vector3d(0.0, -height, 0.0); break; } var xform = Matrix3d.Displacement(mtext.Location.GetAsVector()) * Matrix3d.Rotation(mtext.Rotation, mtext.Normal, Point3d.Origin) * Matrix3d.PlaneToWorld(new Plane(Point3d.Origin, mtext.Normal)) * Matrix3d.Displacement(disp); return new Point3d[4] { Point3d.Origin.TransformBy(xform), new Point3d(width, 0.0, 0.0).TransformBy(xform), new Point3d(width, height, 0.0).TransformBy(xform), new Point3d(0.0, height, 0.0).TransformBy(xform) }; } -
Brillant, comme d'habitude. ;)
-
Salut, Juste un truc, pour aborder la notion de bulge sans passer par les angles et la trigonométrie (certains sont allergiques), on peut aussi définir le bulge comme le rapport entre la flèche et demi-corde (on peut y percevoir la notion de courbure), reste juste à préciser le sens (horaire ou anti-horaire) par le signe. Une petite remarque : "Si, au lieu du quart de la tangente de l'angle les développeurs avaient choisi la moitié de la tangente, il aurait fallu gérer les angles supérieurs à 180 ° par une valeur de signe alors qu'avec le quart de la tangente..." Il s'agit plutôt de la tangente du quart de l'angle (ou du demi angle).
-
Salut, As-tu téléchargé et installé le module VBA ?
-
Il s'agit d'un accent grave (pour les voyelles), il faut taper un un autre caractère (ou espace) pour le voir.
-
Oups, AltGr+7
-
Oui, (AltGr+5), ne pas oublier l'astérisque après le U : "`*U*"
