Aller au contenu

VDH-Bruno

Membres
  • Compteur de contenus

    1 146
  • Inscription

  • Dernière visite

  • Jours gagnés

    20

Tout ce qui a été posté par VDH-Bruno

  1. VDH-Bruno

    Cotation

    Bonsoir, A voir, si ça peut convenir en l’état….. ;; Valeur décimal du texte de cotation en exposant VDH-Bruno (defun c:dimexposant (/ ss i e val mm) (setq prec 10) ; précision du décimal à personnaliser (sssetfirst nil (setq ss (cond ((ssget "_I" '((0 . "DIMENSION")))) (T (princ "\nSélectionnez les cotations à traiter...") (ssget '((0 . "DIMENSION")))) ) ) ) (repeat (setq i (if ss (sslength ss) 0)) (if (< 0 (setq e (entget (ssname ss (setq i (1- i)))) val (cdr (assoc 42 e)) mm (- (fix (+ 0.5 (* val prec))) (* (fix val) prec)) ) ) (entmod (subst (cons 1 (strcat (itoa (fix val)) "{\\H0.7x;\\S" (itoa mm) "^;}")) (assoc 1 e) e ) ) ) ) (princ) ) Cordialement
  2. VDH-Bruno

    1 cercles en 2arcs

    Salut, Une variation sur le même modèle, une routine qui trace l’arc de cercle complémentaire de celui pointé en référence. ;; VDH-Bruno ;; Dessine l'arc complémentaire à l'arc pointé en référence (defun c:A2A (/ e ang50 ang51) ; Arc to 2 Arc (princ "\nSélectionnez un arc de cercle: ") (and (setq e (ssget "_:S:E" '((0 . "ARC")))) (setq e (entget (ssname e 0)) ang50 (assoc 50 e) ang51 (assoc 51 e) ) (entmake (subst (cons 51 (cdr ang50)) ang51 (subst (cons 50 (cdr ang51)) ang50 e))) (progn (initget "Oui Non") (if (= (getkword "\nEffacer l'Arc référent ? [Oui/Non] <N>: ") "Oui") (entdel (cdr(assoc -1 e))) ) ) ) (princ) ) A+
  3. VDH-Bruno

    1 cercles en 2arcs

    Salut, Je répondais à cette demande par 2 points comme avec la commande coupure, re-teste en configurant CMDECHO à 1 pour voir les invites.. Sinon je vois pas car sur 2007 cela fonctionne très bien. A+
  4. VDH-Bruno

    1 cercles en 2arcs

    Salut, Un petit truc vite fait encore un peu brut de décoffrage, pour dépanner.. ;; Coupure d'un Cercle en 2 Arc VDH Bruno (defun c:CC2A () (command "_.BREAK" (while (not (zerop (getvar "cmdactive"))) (command pause))) ((lambda (e) (if (= "ARC" (cdr (assoc 0 e))) (entmake (list (assoc 0 e) (assoc 8 e) (assoc 10 e) (assoc 40 e) (assoc 210 e) (cons 50 (cdr (assoc 51 e))) (cons 51 (cdr (assoc 50 e))) ) ) ) ) (entget (entlast)) ) (princ) ) Tapez CC2A pour lancer la routine.. La fonction exécute la commande coupure qui une fois terminé, trace un arc complémentaire à celui qui vient d’être créé par la coupure du cercle. Cordialement
  5. Ossature Béton, plus précisément la préfabrication d’éléments en béton armé et précontraint (poteaux, poutres, plancher DAP), c’est essentiellement de la préfa lourde pour la réalisation de bases logistiques, usines, centres commerciaux, parking... Ce n’est pas encore fait et du retard s’annonce mais ça ce précise tout de même. Après pour ce qui sera de ma présence futur difficile à moins d’une remise en question professionnelle...(dans cette optique je remercie Rebcao pour ses supports pour AutoCAD 2013). A+
  6. Pardon, je me suis mal exprimé, je ne parlais pas d’un abandon d’AutoCAD de la part d’AutoDesk mais de la part de mon entreprise… Entreprise très modeste détenu par un groupe financé par des fonds de pensions anglo-saxons et qui à l’échelle du groupe développerait son propre logiciel métier... Ce qui justifie l'abscence d'évolutions logiciel depuis la version 2007… D’un autre coté l’absence de mise à niveau perpétuelle sous AutoCAD, m’a permis dernièrement de me libérer assez d’énergie pour m’intéresser au lisp. A+
  7. Re, Tant que ça m’est possible, c’est toujours un plaisir de converser avec des forumeurs sympthiques. A court ou moyen terme, l’abandon d’AutoCAD est programmé pour un «logiciel encore en développement », ce qui signifie pour moi une forme d’apocaLISP (je suis hélas monolingue). A+ Bruno
  8. Bonjour, Bien que cela ne soit pas à côté de chez moi, ça ne me plait pas plus… Je soutiens !!! A+
  9. Salut alala, Si tu regarde dans mon code, j’ai écrit: (entget (ssname ss (setq i (1- i))) '("PE_URL")) Pour tester sur en dehors du code, tu peux faire : (entget (car (entsel)) '("PE_URL")) La fonction entget possède un argument optionnel qui permet d’accéder au donnée étendu en fonction du nom d’application… Syntaxe complète pour la fonction entget: (entget ename [applist]) L’argument applist accepte les caractères génériques utilisé par la fonction wcmatch Donc lorsque l’on travaille avec les codes dxf, en théorie on devrait pour bien faire extraire les définitions d’entité avec la syntaxe suivante: (entget (car (entsel)) '("*")) Pour retourner les données étendues d’une entité quelques soit le nom d’application. Cela pour éviter de les supprimer lorsque l’on travaille avec entmode.. Si le sujet t’intéresse un peu, tu peux regarder ce lien http://cadxp.com/index.php?/topic/35668-echelle-lineaire/page__view__findpost__p__194327 Ou j’avais tenté une explication un peu similaire.. Cordialement,
  10. Bonjour, Visiblement alala a été plus rapide, je livre tout de même ma solution en passant par les valeurs dxf.. (defun c:AuditLinks (/ ss i n l txt file) ;; Selection avant/après -> "grippé (sssetfirst nil (setq ss (cond ((ssget "_I" '((-3 ("PE_URL"))))) (T (prompt "\nSélectionnez les objets graphiques ayant des hyperliens à lister...") (ssget '((-3 ("PE_URL")))) ) ) ) ) ;; Boucle sur la selection (repeat (setq i (if ss (sslength ss) 0)) (setq l (cons (cons (itoa i) (cdr (assoc 1000 (cdadr (assoc -3 (entget (ssname ss (setq i (1- i))) '("PE_URL")))))) ) l ) ) ) ;; Affichage du traitement sur l'ecran texte AutoCAD (textscr) (princ (setq txt "" txt (strcat "\n\nIl y a " (itoa (length l)) " entités dans la selection ayant un Hyperlien..." "\n" (foreach x l (setq txt (strcat txt "\n" (car x) "\t" (cdr x)))) ) ) ) ;; Enregistrement des résultats dans un fichier texte (initget "Oui Non") (if (= (getkword "\nEnregistrer dans un fichier ? [Oui/Non] <Non>: ") "Oui") (and (setq file (getfiled "Créez ou sélectionnez un fichier" "" "txt" 33)) (setq file (open file "a")) (princ txt file) (close file) ) ) (graphscr) (princ) ) Cordialement,
  11. VDH-Bruno

    lisp de cotation

    Salut, Essaye ceci: (setvar "celweight" -1) Ou (setvar 'celweight -1) A+
  12. Ce n’est pas vraiment difficile même pour un non initié, ce qu’il faut retenir pour s’y retrouver, c’est la structure et l’organisation des composants de définition de boite de dialogue et pas forcément se perdre avec leurs définitions exacte (pour cela il y a l’aide). Le DCL est de mon point de vu un langage descriptif, et pas un langage de programmation qui sert à écrire des algorithmes. Là il y a juste une description à comprendre, écrite avec des composants (tile) auquel on adjoint des attributs si il y a lieu, tout cela étant disposés en colonnes ou rangées, les structures ainsi définie pouvant être factorisés (ou nommés ) pour une meilleur lisibilité du code, ou pour être réutilisés dans d’autres définition de boîte de dialogue. Ps : Si j’ai autant détaillé mes réponses, c’est plus en souvenir de ces longues années passés sur LT qu'autre chose..., ou je me sentais frustré d’être bridé alors que d’autres semblaient pouvoir faire des trucs extraordinaires avec leurs version pleine… Ps bis : Sinon question subsidiaire tu me conseillerais lequel de tes supports de cours sachant que je tourne sous une version 2007 et que je cherche à m’autoformer avec la version de démo d’AutoCAD 2013. A+
  13. Maintenant si ;)
  14. Re, Allez dans la foulée et pour une fois qu’il est possible d’émuler un peu AutoCAD LT autrement que par diesel ,scrip ou menu personnalisé. Comme il a été dit pour la liste_box, il est évidemment possible de modifier la définition du composant icon_image prédéfinit dans le fichier base.dcl: icon_image : image_button { color = 0; width = 12; aspect_ratio = 0.66; allow_accept = true; fixed_height = true; fixed_width = true; } Définition utilisé par la boite de dialogue acad_icon du fichier ACLT.DCL, par exemple pour avoir des images plus grandes et rectangulaires, il suffit de modifier les attributs width (qui fixe la largeur) et aspect_ratio (qui fixe le rapport hauteur / largeur): icon_image : image_button { color = 0; width = 15; aspect_ratio = 1; allow_accept = true; fixed_height = true; fixed_width = true; } Ceci est pour l’exemple car est préférable de ne pas modifier les composants de base et plutôt préférer redéfinir leur définition directement dans la définition de la boite de dialogue en remplaçant par exemple dans acad_icon : : icon_image { key = "icon1"; } Par: : image_button { key = "icon1"; color = 0; width = 15; aspect_ratio = 1; allow_accept = true; fixed_height = true; fixed_width = true; } Ou en définissant soi-même son propre composant dans base.dcl ou aclt.dcl (ou acad.dcl sur version pleine): myicon_image : image_button { color = 0; width = 15; aspect_ratio = 1; allow_accept = true; fixed_height = true; fixed_width = true; } Que l’on emploie dans la boite de dialogue acad_icon à la place de tous les appels au composant icon_image. Une dernière astuce au cas ou, pour visualiser les modification sur le menu image (seulement pour les versions full), il suffit de lancer l’instruction lisp suivante (menucmd "I=*") sur la ligne de commande ou passer par l’éditeur Visual Lisp -> Outils -> Outils d’interface ->Aperçu DCL dans l’éditeur. (Ps : Pensez à relancer AutoCAD pour que le programme recharge les modifications apporté aux fichiers dcl). En espérant avoir été clair et suffisamment complet sur le sujet, Cordialement Bruno,
  15. Re, Je pense que cela doit fonctionner sous version LT car en ouvrant avec le bloc-notes le fichier base.DCL. Il est indiqué qu’il est utilisé par les fichiers : Donc dans ton cas recherche la définition du menu image acad_icon dans le fichier ACLT.DCL A+
  16. Bonjour rebcao, Voilà comment je procèderai sous une version pleine, à toi de voir si cela est transposable pour une version LT (en fait je doute qu’il y a un fichier acad.dcl sous LT…. Du fait que la version soit brider avec l’emploi des lisp.) Sous AutoCAD full les boites de dialogues définie en DCL comme le menu Image sont définie dans le fichier acad.dcl (nota : modifier l’aspect d’une boite de dialogue de ce fichier se répercutera sur toutes les commandes utilisant la définition modifié) Définition de la boîte de dialogue extrait du fichier acad.dcl. acad_icon: dialog { key = "label"; initial_focus = "listbox"; : row { : list_box { width = 20; height = 21; fixed_height = true; key = "listbox"; allow_accept = true; } : column { : row { : icon_image { key = "icon1"; } : icon_image { key = "icon2"; } : icon_image { key = "icon3"; } : icon_image { key = "icon4"; } } : row { : icon_image { key = "icon5"; } : icon_image { key = "icon6"; } : icon_image { key = "icon7"; } : icon_image { key = "icon8"; } } : row { : icon_image { key = "icon9"; } : icon_image { key = "icon10"; } : icon_image { key = "icon11"; } : icon_image { key = "icon12"; } } : row { : icon_image { key = "icon13"; } : icon_image { key = "icon14"; } : icon_image { key = "icon15"; } : icon_image { key = "icon16"; } } : row { : icon_image { key = "icon17"; } : icon_image { key = "icon18"; } : icon_image { key = "icon19"; } : icon_image { key = "icon20"; } } /* * : row { * : icon_image { * key = "icon21"; * } * : icon_image { * key = "icon22"; * } * : icon_image { * key = "icon23"; * } * : icon_image { * key = "icon24"; * } * } */ } } : row { : row { spacer_0; : row { fixed_width = true; : button { label = "&Précédent"; key = "prev"; width = 8; } :spacer { width = 2; } :button { label = " Suiva&nt "; key = "next"; width = 8; } } spacer_0; } spacer; ok_cancel; } } Le composant que tu souhaites modifié et le composant list_box dont la largueur est prédéfinit par l’attribut width définit à 20, pour augmenter la largeur de la list_box il suffit d’augmenter la largueur de cet attribut, par exemple pour doubler la largeur remplacer : width = 20; par width = 40; A tester sous LT, et tient nous au courant... Cordialement Bruno
  17. VDH-Bruno

    DXF 3

    Salut, Si l’opération consiste à substitué la valeur, 6000CDE par 5000CDE dans un MTEXT, pour une fois je conseillerais de passer par les propriétés ActiveX.. Plutôt que de passer par les listes DXF. Car en plus de boucler sur ta sélection, puis sur le traitement au moyen de vl-string-subst (qui ne traite par défaut que la première occurrence trouvé comme rappelé par Patrick_35 ), il faut également penser à l’éventualité de la présence ou non de plusieurs code de groupe 3 (avec une routine de type massoc) et le code de groupe 1 n’est peut-être pas négliger non plus dans ton traitement. Alors que la propriété textstring accessible en Vlisp retourne l’intégralité du texte définie dans un MTEXT et ce quelque soit la longueur de sa chaine de caractère ( inférieure ou supérieur à 250 caractères). Pour lire la valeur dans d’un mtext : (vla-get-textstring (vlax-ename->vla-object (car (entsel)))) Et pour l’exemple que tu donnes cela pourrait donner ceci à tester: (defun c:bigsyke (/ i ss ent obj) (and (setq i -1 ss (ssget "_X" '((0 . "MTEXT")))) (while (setq ent (ssname ss (setq i (1+ i)))) (setq txt (vla-get-textstring (setq obj (vlax-ename->vla-object ent)))) (vla-put-textstring obj (while (/= txt (setq txt (vl-string-subst "6000CDC" "5000CDE" txt))) txt)) ) ) (princ) ) A+
  18. Bonsoir, Je ne connais pas de méthode en natif pour réaliser cela, ci-dessous un code écrit pour l’occasion (également avec une bête liste des propriétées établit d'après l’aide VBA pour 2013 ;) ). ;; (list-property-availabe obj flag) VDH-Bruno ;; ------------------------------------------------------------------------ ;; Retourne la liste des propriétées de l'objet argument. Si flag et ;; différent de nil, les propriétées en lecture seules sont omises. ;; Exemple: ;; (list-property-availabe (vlax-ename->vla-object (car (entsel))) nil) ;; (list-property-availabe (vlax-ename->vla-object (car (entsel))) T) ;; Nota: Liste des propriétées établie d'après les fichiers d'aide de la ;; version 2013. (defun list-property-availabe (obj flag) (vl-remove-if-not '(lambda (prop) (vlax-property-available-p obj prop flag)) '(Action Active ActiveDimStyle ActiveDocument ActiveInvProject ActiveLayer ActiveLayout ActiveLinetype ActiveMaterial ActiveProfile ActivePViewport ActiveSelectionSet ActiveSpace ActiveTextStyle ActiveUCS ActiveViewport ADCInsertUnitsDefaultSource ADCInsertUnitsDefaultTarget AdjustForBackground AdjustForBackground AffectsGraphics Algorithm Alignment AlignmentPointAcquisition AlignSpace AllowedValues AllowLongSymbolNames AllowManualHeights AllowManualPositions AltFontFile AltRoundDistance AltSubUnitsFactor AltSubUnitsSuffix AltSuppressLeadingZeros AltSuppressTrailingZeros AltSuppressZeroFeet AltSuppressZeroInches AltTabletMenuFile AltTextPrefix AltTextSuffix AltTolerancePrecision AltToleranceSuppressLeadingZeros AltToleranceSuppressTrailingZeros AltToleranceSuppressZeroFeet AltToleranceSuppressZeroInches AltUnits AltUnitsFormat AltUnitsPrecision AltUnitsScale Angle AngleFormat AngleVertex Annotation Annotative Application ArcEndParam ArcLength ArcPoint ArcSmoothness ArcStartParam Area Arrowhead1Block Arrowhead1Type Arrowhead2Block Arrowhead2Type ArrowheadBlock ArrowheadSize ArrowheadType ArrowSize ArrowSymbol AssociativeHatch AttachmentPoint Author AutoAudit AutomaticPlotLog AutoSaveInterval AutoSavePath AutoSnapAperture AutoSnapApertureSize AutoSnapMagnet AutoSnapMarker AutoSnapMarkerColor AutoSnapMarkerSize AutoSnapToolTip AutoTrackingVecColor AutoTrackTooltip AxisDirection AxisPosition BackgroundColor BackgroundFill BackgroundLinesColor BackgroundLinesHiddenLine BackgroundLinesLayer BackgroundLinesLinetype BackgroundLinesLinetypeScale BackgroundLinesLineweight BackgroundLinesPlotStyleName BackgroundLinesVisible Backward Bank BasePoint BaseRadius BatchPlotProgress BeepOnError BigFontFile BitFlags BitFlags Block Block BlockColor BlockConnectionType BlockRotation Blocks BlockScale BlockScaling Blue BookName BottomHeight BreaksEnabled BreakSize BreakSpacing Brightness CanonicalMediaName Caption CategoryName Center CenterMarkSize CenterPlot CenterPoint CenterType Centroid Check ChordPoint Circumference Clipped ClippingEnabled Closed Closed2 Color ColorBookPath ColorIndex ColorMethod ColorName Columns Columns ColumnSpacing ColumnWidth CommandDisplayName Comment Comments Comments ConfigFile ConfigName Constant ConstantWidth Constrain ContentBlockName ContentBlockType ContentType ContinuousPlotLog ContourlinesPerSurface Contrast ControlPoints Coordinate Coordinates Count CreaseLevel CreaseType CreateBackup CurrentSectionType CursorSize CurveTangencyLinesColor CurveTangencyLinesLayer CurveTangencyLinesLinetype CurveTangencyLinesLinetypeScale CurveTangencyLinesLineweight CurveTangencyLinesPlotStyleName CurveTangencyLinesVisible CustomDictionary CustomIconPath CustomScale CvHullDisplay Database DecimalSeparator DefaultInternetURL DefaultOutputDevice DefaultPlotStyleForLayer DefaultPlotStyleForObjects DefaultPlotStyleTable DefaultPlotToFilePath DefaultPlotToFilePath Degree Degree2 Delta DemandLoadArxApp Description DestinationBlock DestinationFile Diameter Dictionaries DimConstrDesc DimConstrExpression DimConstrForm DimConstrName DimConstrReference DimConstrValue DimensionLineColor DimensionLineExtend DimensionLinetype DimensionLineWeight DimLine1Suppress DimLine2Suppress DimLineInside DimLineSuppress DimStyles DimTxtDirection Direction DirectionVector Display DisplayGrips DisplayGripsWithinBlocks DisplayLayoutTabs DisplayLocked DisplayOLEScale DisplayScreenMenu DisplayScrollBars DisplaySilhouette DockedVisibleLines DockStatus Document Documents DogLegged DoglegLength Drafting DrawingDirection DrawLeaderOrderType DrawMLeaderOrderType DriversPath DWFFormat EdgeExtensionDistances EffectiveName Elevation ElevationModelSpace ElevationPaperSpace Enable EnableBlockRotation EnableBlockScale EnableBreak EnableDogleg EnableFrameText EnableLanding EnableShadowDisplay EnableStartupDialog EndAngle EndDraftAngle EndDraftMagnitude EndParameter EndPoint EndSmoothContinuity EndSmoothMagnitude EndSubMenuLevel EndTangent EnterpriseMenuFile EntityColor EntityTransparency Explodable ExtensionLineColor ExtensionLineExtend ExtensionLineOffset ExtensionLineWeight ExtLine1EndPoint ExtLine1Linetype ExtLine1Point ExtLine1StartPoint ExtLine1Suppress ExtLine2EndPoint ExtLine2Linetype ExtLine2Point ExtLine2StartPoint ExtLine2Suppress ExtLineFixedLen ExtLineFixedLenSuppress FaceCount Fade Feature FieldLength File FileName Files FileSize FingerprintGUID FirstSegmentAngleConstraint Fit FitPoints FitTolerance FloatingRows FlowDirection Flyout FontFile FontFileMap ForceLineInside ForegroundLinesColor ForegroundLinesEdgeTransparency ForegroundLinesFaceTransparency ForegroundLinesHiddenLine ForegroundLinesLayer ForegroundLinesLinetype ForegroundLinesLinetypeScale ForegroundLinesLineweight ForegroundLinesPlotStyleName ForegroundLinesVisible FoundPath FractionFormat Freeze FullCRCValidation FullFileName FullName FullScreenTrackingVector GenerationOptions GradientAngle GradientCentered GradientColor1 GradientColor2 GradientName GraphicsWinLayoutBackgrndColor GraphicsWinModelBackgrndColor Green GridOn GripColorSelected GripColorUnselected GripSize Groups Handle HasAttributes HasExtensionDictionary HasLeader HasSheetView HasSubSelection HasVpAssociation HatchObjectType HatchStyle HeaderSuppressed Height HelpFilePath HelpString History HistoryLines HorizontalTextPosition HorzCellMargin HWND HWND32 HyperlinkBase HyperlinkDisplayCursor HyperlinkDisplayTooltip Hyperlinks ImageFile ImageFrameHighlight ImageHeight ImageVisibility ImageWidth IncrementalSavePercent Index IndicatorFillColor IndicatorTransparency InsertionPoint InsertionPoint InsUnits InsUnitsFactor IntensityColorScheme IntersectionBoundaryColor IntersectionBoundaryDivisionLines IntersectionBoundaryLayer IntersectionBoundaryLinetype IntersectionBoundaryLinetypeScale IntersectionBoundaryLineweight IntersectionBoundaryPlotStyleName IntersectionBoundaryVisible IntersectionFillColor IntersectionFillFaceTransparency IntersectionFillHatchAngle IntersectionFillHatchPatternName IntersectionFillHatchPatternType IntersectionFillHatchScale IntersectionFillHatchSpacing IntersectionFillLayer IntersectionFillLinetype IntersectionFillLinetypeScale IntersectionFillLineweight IntersectionFillPlotStyleName IntersectionFillVisible Invisible IsCloned IsDynamicBlock IsLayout IsModified ISOPenWidth IsOwnerXlated IsPartial IsPeriodic IsPlanar IsPrimary IsQuiescent IsRational Issuer IsXRef ItemName JogAngle JogLocation Justification Key Key32 KeyboardAccelerator KeyboardPriority KeyLength Keywords KnotParameterization Knots Label LabelBlockId LabelBlockId32 LandingGap LargeButtons LastHeight LastSavedBy Layer LayerOn LayerPropertyOverrides Layers LayerState Layout LayoutCreateViewport LayoutCrosshairColor LayoutDisplayMargins LayoutDisplayPaper LayoutDisplayPaperShadow LayoutID LayoutID32 Layouts LayoutShowPlotSetup Leader1Point Leader2Point LeaderCount LeaderLength LeaderLineColor LeaderLinetype LeaderLineTypeId LeaderLineWeight LeaderType Left Length LensLength Limits LinearScaleFactor LineSpacingDistance LineSpacingFactor LineSpacingStyle Linetype LinetypeGeneration Linetypes LinetypeScale Lineweight LineweightDisplay LiveSectionEnabled LoadAcadLspInAllDocuments LocaleID Lock LockAspectRatio Locked LockPosition LogFileOn LogFilePath LowerLeftCorner Macro MainDictionary MaintainAssociativity MajorAxis MajorRadius Mask Material Materials MaxActiveViewports MaxAutoCADWindow MaxLeaderSegmentsPoints Mclose Mdensity Measurement MenuBar MenuFile MenuFileName MenuGroups Menus MinimumTableHeight MinimumTableWidth MinorAxis MinorRadius MLineScale Mode ModelCrosshairColor ModelSpace ModelType ModelView MomentOfInertia Monochrome MRUNumber MSpace MTextAttribute MTextAttributeContent MTextBoundaryWidth MTextDrawingDirection MVertexCount Name NameNoMnemonic Nclose NDensity Normal NumberOfControlPoints NumberOfCopies NumberOfFaces NumberOfFitPoints NumberOfLoops NumberOfVertices NumCellStyles NumCrossSections NumGuidePaths NumVertices NVertexCount ObjectID ObjectID32 ObjectName ObjectSnapMode ObjectSortByPlotting ObjectSortByPSOutput ObjectSortByRedraws ObjectSortByRegens ObjectSortBySelection ObjectSortBySnap ObliqueAngle OleItemType OLELaunch OlePlotQuality OLEQuality OleSourceApp OnMenuBar OpenSave Origin OrthoOn Output OverrideCenter OwnerID OwnerID32 PageSetupOverridesTemplateFile PaperSpace PaperUnits Parent Password Path PatternAngle PatternDouble PatternName PatternScale PatternType Perimeter Periodic PickAdd PickAuto PickBoxSize PickDrag PickFirst PickfirstSelectionSet PickGroup Plot PlotConfigurations PlotHidden PlotLegacy PlotLogFilePath PlotOrigin PlotPolicy PlotRotation PlotStyleName Plottable PlotType PlotViewportBorders PlotViewportsFirst PlotWithLineweights PlotWithPlotStyles PolarTrackingVector Position PostScriptPrologFile Preferences Preset PrimaryUnitsPrecision PrincipalDirections PrincipalMoments PrinterConfigPath PrinterDescPath PrinterPaperSizeAlert PrinterSpoolAlert PrinterStyleSheetPath PrintFile PrintSpoolerPath PrintSpoolExecutable ProductOfInertia ProfileRotation Profiles PromptString PropertyName ProviderName ProviderType ProxyImage QNewTemplateFile QuietErrorMode RadiiOfGyration Radius RadiusRatio ReadOnly Red ReferenceCount RegenerateTableSuppressed RegisteredApplications RemoveHiddenLines RenderSmoothness RepeatBottomLabels RepeatTopLabels RevisionNumber RevolutionAngle Rotation RoundDistance RowHeight Rows RowSpacing SaveAsType Saved SavePreviewThumbnail Scale ScaleFactor ScaleHeight ScaleLineweights ScaleWidth SCMCommandMode SCMDefaultMode SCMEditMode SCMTimeMode SCMTimeValue SecondPoint SecondSegmentAngleConstraint SectionManager SegmentPerPolyline Selection SelectionSets SerialNumber Settings ShadePlot ShadowDisplay SheetView ShortCutMenu ShortCutMenuDisplay Show ShowAssociativity ShowClipped ShowHistory ShowIntensity ShowPlotStyles ShowProxyDialogBox ShowRasterImage ShowRotation ShowWarningMessages SingleDocumentMode Smoothness SnapBasePoint SnapOn SnapRotationAngle SolidFill SolidType SourceObjects SplineFrame SplineMethod StandardScale StandardScale2 StartAngle StartDraftAngle StartDraftMagnitude StartParameter StartPoint StartSmoothContinuity StartSmoothMagnitude State StatusID StoreSQLIndex StyleName StyleSheet Subject SubMenu SubUnitsFactor SubUnitsSuffix SummaryInfo SupportPath SuppressLeadingZeros SuppressTrailingZeros SuppressZeroFeet SuppressZeroInches SurfaceNormals SurfaceType SurfTrimAssociativity SymbolPosition System TableBreakFlowDirection TableBreakHeight TablesReadOnly TableStyleOverrides TabOrder TagString TaperAngle Target TempFileExtension TempFilePath TemplateDwgPath TemplateId TemplateId32 TempXRefPath TextAlignmentPoint TextAlignmentType TextAngleType TextAttachmentDirection TextAttachmentType TextBackgroundFill TextBottomAttachmentType TextColor TextDirection TextEditor TextFill TextFillColor TextFont TextFontSize TextFontStyle TextFrameDisplay TextGap TextGenerationFlag TextHeight TextInside TextInsideAlign TextJustify TextLeftAttachmentType TextLineSpacingDistance TextLineSpacingFactor TextLineSpacingStyle TextMovement TextOutsideAlign TextOverride TextPosition TextPrecision TextPrefix TextRightAttachmentType TextRotation TextString TextStyle TextStyleName TextStyles TextSuffix TextureMapPath TextWidth TextWinBackgrndColor TextWinTextColor Thickness TimeServer TimeStamp Title TitleSuppressed ToleranceDisplay ToleranceHeightScale ToleranceJustification ToleranceLowerLimit TolerancePrecision ToleranceSuppressLeadingZeros ToleranceSuppressTrailingZeros ToleranceSuppressZeroFeet ToleranceSuppressZeroInches ToleranceUpperLimit Toolbars ToolPalettePath Top TopHeight TopRadius TotalAngle TotalLength TranslateIDs Transparency TrueColor TrueColorImages TurnHeight Turns TurnSlope Twist TwistAngle Type UCSIconAtOrigin UCSIconOn UCSPerViewport UIsolineDensity UnderlayLayerOverrideApplied UnderlayName UnderlayVisibility Units UnitsFormat UnitsType UpperRightCorner UpsideDown URL URLDescription URLNamedLocation Used UseEntityColor UseLastPlotSettings User UseStandardScale Utility Value Value32 VBE Verify Version VersionGUID VertCellMargin VertexCount VerticalDirection VerticalTextPosition Vertices ViewingDirection ViewportDefault ViewportOn Viewports Views ViewToPlot VisibilityEdge1 VisibilityEdge2 VisibilityEdge3 VisibilityEdge4 Visible VIsolineDensity VisualStyle Volume Weights Width WindowLeft WindowState WindowTitle WindowTop WireframeType WorkspacePath XEffectiveScaleFactor XRefDatabase XrefDemandLoad XRefEdit XRefFadeIntensity XRefLayerVisibility XScaleFactor XVector YEffectiveScaleFactor YScaleFactor YVector ZEffectiveScaleFactor ZScaleFactor ) ) ) A+
  19. Salut, Sans aller à déclarer tous tes dossiers dans les chemins de recherche fichiers des fichiers support, tu peux au moins déclarer la partie commune de ton arborescence c.a.d. "K:\\AUTOCAD\\Tuyauterie\\" Puis définir dans un fichier ou dans ton lisp une liste associative du type ((nom-de-blk1 chemin-relatif1) ((nom-de-blk2 chemin-relatif2) …) Sur le modèle que tu donnes en exemple on pourrait faire ceci : (setq chemin-relatif '(("VPM" . "VPM\\") ("VPM2" . "VPM\\") ("VPD" . "VPD\\") ("VO" . "VO\\") ("VB" . "VB\\"))) Pour récupérer le chemin relatif du bloc "VPM" contenu dans une variable blk, il suffit de faire ceci : _$ (cdr (assoc blk chemin-relatif)) "VPM\\" Au moyen de la fonction findfile tu retrouve le chemin complet de ton fichier _$ (findfile (strcat (cdr (assoc blk chemin-relatif)) blk ".dwg")) "K:\\AUTOCAD\\Tuyauterie\\VPM\\VPM.dwg" Ce qui te permettras de lancer ta fonction d’insertion de la façon suivante : _$ (command "_-insert" (findfile (strcat (cdr (assoc blk chemin-relatif)) blk ".dwg")) (getpoint "\nDonnez le point d'insertion : ") "" "" "" ) nil Sans avoir à coder en dur l’intégralité de tes chemins dans ton fichier lisp ;) Cordialement A+ ----------------------------------------------------------------------------------------------- Edit : A la relecture, j’édite ma réponse car j’ai été un peu vite sans tenir compte des spécificités propre à la commande insert qui intègre déjà une recherche de dwg dans les répertoires de fichier support de ce fait la fonction findfile est superflu ainsi que le fait de spécifier l’extension .dwg. En résumer si "K:\\AUTOCAD\\Tuyauterie\\" est déclaré dans tes chemins de recherche d’AutoCAD, il suffit de renseigner la suite du chemin et le nom du fichier à renseigner. En reprenant l’exemple précédent cela donnerai ceci : _$ (command "_-insert" (strcat (cdr (assoc blk chemin-relatif)) blk) (getpoint "\nDonnez le point d'insertion : ") "" "" "" ) nil Désolé pour la confusion A+
  20. Re, Sinon pour le fun et rester dans le sujet du récursif, avec le même algorithme pour ceux qui préfèrent le style enveloppant : (defun f (n o s / p) (if (setq p (vl-string-search o s)) ((lambda (l) (append (mapcar '(lambda (x) (vl-string-subst o n x p)) l) l)) (f n o (vl-string-subst n o s p)) ) (list s) ) ) Ou alors comme celà: (defun f (n o s / p l) (if (setq p (vl-string-search o s)) (append (mapcar '(lambda (x) (vl-string-subst o n x p)) (setq l (f n o (vl-string-subst n o s p)))) l ) (list s) ) ) Pour tester : _$ (f "-" " " "Bonjour a tous") ("Bonjour a tous" "Bonjour a-tous" "Bonjour-a tous" "Bonjour-a-tous") A+
  21. Bonjour, (gile) étant un grand admirateur de l’élégance qui caractérise le plus souvent l’écriture de tes codes, je ne pouvais espérer plus beau compliment :) . pingoo666 tu auras sans doute compris qu’en ce qui me concerne "l’agent pathogène" s’appelle (gile), sinon plus sérieusement, dans le code précédent, on aurait pu aisément se passer de la fonction auxiliaire foo, en renseignant directement l’argument string sous forme de liste : (defun f (n o l / p) (if (setq p (vl-string-search o (car l))) (f n o (append (mapcar '(lambda (x) (vl-string-subst n o x p)) l) l)) l ) ) Pour tester : _$ (f "-" " " (list "bonjour a tous")) ("bonjour-a-tous" "bonjour a-tous" "bonjour-a tous" "bonjour a tous") Sinon pour ce qui est du code en lui-même il utilise plus un algorithme que l’on peut qualifier d’exponentiation rapide, plutôt qu’un algorithme réellement récursif comme on le trouve dans le code proposé par (gile), ici l’appel récursif est une coquetterie car il intervient principalement en tant que boucle, il est donc aisément traductible son forme impérative avec la fonction while: (defun f-while (n o s / l p) (setq l (list s) p 0 ) (while (setq p (vl-string-search o s p)) (setq l (append l (mapcar '(lambda (x) (vl-string-subst n o x p)) l)) p (1+ p) ) ) l ) Pour tester : _$ (f-while "-" " " "bonjour a tous") ("bonjour a tous" "bonjour-a tous" "bonjour a-tous" "bonjour-a-tous") A+ Bruno
  22. Bonjour, Une version bien meilleur en "récursif terminal" avec mapcar, sur ce type de probleme ( 2 puissance n ), on a un arbre des solutions plus large que profond, ce qui normalement avantage mapcar, en y ajoutant une stratégie de division dans la recherche, je pense que l'on a la meilleure solution. (defun fun (n o s / foo) (defun foo (l p) (if (setq p (vl-string-search o s p)) (foo (append l (mapcar '(lambda (x) (vl-string-subst n o x p)) l)) (1+ p)) l ) ) (foo (list s) 0) ) A+
  23. Bonjour, Aprés réflexion je me dis que le premier jet de (gile) est un excelent jet !!! Ci-dessous, le mieux de ce que j'ai pu produire: (defun f (n o s / p l flag) (if (setq p (vl-string-search o s)) (mapcar '(lambda (x) (strcat (substr s 1 p) (if (setq flag (not flag)) "\n" " ") x)) (append (setq l (f n o (substr s (+ 2 p)))) (cdr l) (list (car l))) ) (list s) ) ) Pour tester: _$ (f "\n" " " "tous le monde") ("tous\nle\nmonde" "tous le monde" "tous\nle monde" "tous le\nmonde") A+ Ps: alala, belle maitrise du logand ;)
  24. Bonsoir, Ma variante: (defun fun (n o s) (if (not (eq s (setq s (vl-string-subst n o s)))) (cons (vl-string-translate (strcat n o) (strcat o n) s) (cons s (fun n o s)) ) ) ) Pour tester: A+ (Edit: Oupss!!! Au jeu de la concision, j'ai fait une erreur de raisonnement le code échoue sur des phrases à plus de 2 intervales, donc pour ce soir pas mieux que le code de (gile) )
  25. Pour le retard Patrick à du oublié de spécifier le fuseau horaire !!! <_< Ceci explique cela très certainement.. Alors attendons et reprenons une bière (ou un jus d’orange pour ceux qui comme moi ne boivent pas) :)
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité