Bonjour,
Il me semble qu'il y a un Bug pour la création de rapports (listings pied de Talus, sur la ligne caractéristique du terrain, de différence altitude, ect...)
Mon axe commence en Négatif (-0+068.00) ce qui bloque les calculs 😞
Aucun problème si je modifie l'abscisse à 0.00.
Exemples de messages d'erreurs :
Avez vous déjà eu ce problème ?
Savez vous si il y a un moyen de le contourner ?
Merci pour vos retours.
Cdt
David
Résolu ! Accéder à la solution.
Résolu par O_Eckmann. Accéder à la solution.
Bonjour,
Avec Civil 2018 tel quel, tu peux t'en sortir, même si ce n'est pas très joli. Il faut paramétrer tes abscisses curvilignes sans séparateur, mais avec la position du séparateur à 1+0 => screencast de la procédure
Si tu es plus téméraire (si Nicolas le permet) tu peux installer cette nouvelle DLL (C3DReport.dll) des rapports que je viens de compiler pour corriger ce problème.
Il faut la copier à la place de celle existante (faire une sauvegarde avant) dans le dossier : "C:\ProgramData\Autodesk\C3D 2018\fra\Data\Reports\Net"
Il faut toujours changer les paramètres ambiants des abscisse curviligne du dessin sur "séparateur => aucun", mais ensuite tous les rapports devraient fonctionner avec un abscisse négative
Olivier
Olivier Eckmann
Je joins la portion de code modifiée fichier ReportUtilities.vb, les modif en gras
'Raw station to string 'station could be the station with or without Derived Public Shared Function GetStationString(ByVal oAlignment As AeccLandLib.IAeccAlignment, ByVal station As Double, _ Optional ByVal settingsStation As AeccLandLib.IAeccSettingsStation = Nothing) As String If settingsStation Is Nothing Then settingsStation = ReportApplication.AeccXDatabase.Settings.AlignmentSettings.AmbientSettings.StationSettings End If Dim delimiter As String delimiter = "+" Select Case settingsStation.StationDelimiterCharacter.Value Case AeccLandLib.AeccStationDelimiterCharacterType.aeccStationDelimiterPlusSign delimiter = "+" Case AeccLandLib.AeccStationDelimiterCharacterType.aeccStationDelimiterMinusSign delimiter = "-" Case AeccLandLib.AeccStationDelimiterCharacterType.aeccStationDelimiterAutomatic delimiter = "+" Case AeccLandLib.AeccStationDelimiterCharacterType.aeccStationDelimiterUnderscore delimiter = "_" Case AeccLandLib.AeccStationDelimiterCharacterType.aeccStationDelimiterNone delimiter = "" Case Else Diagnostics.Debug.Assert(False) delimiter = "+" End Select Dim bStationIndexFormat As Boolean = settingsStation.Format().Value = AeccLandLib.AeccStationFormatType.aeccStationIndexFormat Dim stationIndexInc As Double = oAlignment.StationIndexIncrement Dim precision As Integer = settingsStation.Precision.Value Dim positionType As AeccLandLib.AeccStationDelimiterPositionType = settingsStation.StationDelimiterPosition.Value Dim dropDecimal As Boolean = settingsStation.DropDecimalsForWholeNumbers.Value Dim position As Integer = positionType Dim strFormat As String If dropDecimal Then strFormat = "{0:F0}" Else strFormat = String.Format("{{0:F{0}}}", precision) End If Dim staString As String = String.Format(strFormat, station) Dim dotSeparator As String = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator Dim dotIndex As Long = staString.IndexOf(dotSeparator) If (dotIndex < 0) Then dotIndex = staString.Length End If If (bStationIndexFormat = True) Then Dim strBuilder As System.Text.StringBuilder = New System.Text.StringBuilder() Dim intValue As Integer If (Math.Sign(station) >= 0) Then intValue = Math.Floor(station) Else intValue = Math.Ceiling(station) End If strBuilder.AppendFormat("{0}{1}{2}", intValue \ stationIndexInc, delimiter, intValue Mod stationIndexInc) If (dotIndex > 0) Then staString = staString.Substring(dotIndex) strBuilder.Append(staString) End If GetStationString = strBuilder.ToString() Else Dim insertPos = dotIndex - position If (insertPos <= 0) Then Dim strBuilder As System.Text.StringBuilder = New System.Text.StringBuilder() If (settingsStation.StationDelimiterCharacter.Value = AeccLandLib.AeccStationDelimiterCharacterType.aeccStationDelimiterNone) Then strBuilder.AppendFormat("{0}", delimiter) Else strBuilder.AppendFormat("0{0}", delimiter) End If Dim count As Integer = -insertPos While (count > 0) strBuilder.Append("0") count -= 1 End While strBuilder.Append(staString) staString = strBuilder.ToString() Else staString = staString.Insert(insertPos, delimiter) End If GetStationString = staString End If End Function
Olivier
Olivier Eckmann
Merci Olivier,
Nous sommes tjs en V2016, ton dll fonctionnera ?
cdt
David
Bonjour,
Normalement non, car je l'ai recompilée pour V2018.
Désolé, mais je n'ai pas la 2016 de dispo donc je ne peux pas la recompiler pour toi.
Les sources vb.net sont installées avec le produit, donc tu as tout pour faire la modif et recompiler la DLL pour 2016.
Sinon, il faudrait voir avec Vincent si Autodesk peut faire quelque chose pour toi.
Olivier
Olivier Eckmann
Bonjour Olivier,
Mille Mercis pour ton aide.
On va voir pour la recompiler avec toutes les informations que tu nous as données et je vais (essayer de) voir avec Autodesk pour que la correction soit prise en compte dans les versions à venir car ce n'est quand même pas normal je trouve...
Heureusement que tu étais là...
Bonne journée
Cdt
Nicolas
Bonjour,
Merci David et Nicolas d'avoir fait remonter ce problème sur le forum et un grand merci Olivier pour ta réactivité et ton expertise.
J'enregistre cette correction à apporter en priorité sur la prochaine version de Civil 3D.
Salut Vincent,
je pense que le bug est un peu plus complexe que ça, car lorsque tu spécifies le mode décimal (dans les paramètres ambiants), les 4 paramètres suivants sont désactivés, alors qu'ils sont quand même utilisés dans le code VB pour formater les PK.
Les corrections apportées permettent de contourner le problème, mais surement pas de manière parfaite. Je n'ai fait que corriger le séparateur "aucun" de 1 espace à rien et enlever le séparateur en mode "aucun".
Il faudrait reprendre l'analyse un peu plus poussée pour le mode décimal.
J'ai téléchargé une version d'éval de Civil 2016, si je réussis à recompiler la DLL je la poste cette semaine.
Olivier
Olivier Eckmann
Merci Beaucoup Olivier.
Nous avons malheureusement également identifié une correction à apporter au listing d'axe en plan en 2018.
Il y a donc un besoin de travailler sur ce thème.
Salut Nicolas,
A tester cette DLL recompilée pour Civil 2016 avec les modifs signalées.
Bien faire une sauvegarde de la DLL d'origine avant de remplacer.
Olivier
Olivier Eckmann
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.