Skip to content

Updated Website#82

Open
alexanderoster wants to merge 179 commits intoAutodesk:developfrom
alexanderoster:develop
Open

Updated Website#82
alexanderoster wants to merge 179 commits intoAutodesk:developfrom
alexanderoster:develop

Conversation

@alexanderoster
Copy link
Copy Markdown
Contributor

No description provided.

netfabb and others added 30 commits September 6, 2025 00:48
…factor processing (#37)

* LibMCCore: Refine hatch interpolation handling and improve nonlinear factor processing

- Core toolpath logic (amc_toolpathlayerdata.cpp):
  - Introduced compile-time switch `USEALLMODIFICATIONFACTORS` to control whether
    all modification factors (F/G/H) or only factor F are processed.
  - Added safeguard when assigning nonlinear interpolation data to avoid
    out-of-range vector access when `nSubInterpolationCount` is zero.

- ScanLabSMC driver (CSMCJobInstance):
  - Added parsing and output of new active channel data (`active0`, `active1`) in
    SMC v1.0 simulation files.
  - Updated CSV field mapping to include new channels, replacing placeholder
    unused entries.
  - Extended data table schema to add `active0` and `active1` columns.
  - Populated active channel values in the output table and reset corresponding
    vectors after use.

- LibMCEnv layer evaluation (libmcenv_toolpathlayer.cpp):
  - Commented out exception throw for incomplete hatch profile evaluation to
    allow partial evaluation without interrupting execution.

Signed-off-by: Yury Rodzikau <y.rodzikau@c1-technologies.com>

* LibMCCore: add laser power channel to scatter plot and implement datatable channel filling

- Renamed simulation column `active0` to `power` to reflect actual laser power semantics
  in SMC v1.1 job data output.
- Updated simulation data export to write laser power values into the new `power` column.
- Implemented `fillScatterplotChannel` in `libmcenv_datatable.cpp`:

* LibMCCore/WebClient: add laser power visualization mode and power data display in point inspector

- Added a new "powerramp" color mode in LayerView for visualizing laser power
  distribution across the toolpath.
- Implemented computeChannelColumnRange(...) to detect the min/max of a data
  column and normalize power values for coloring.
- Added makeLaserPowerColors() to convert normalized power values to HSL-based
  RGB gradient for visual representation.
- Extended point inspector to display per-point laser power.
- Updated data loading logic to correctly populate the "power" channel from
  backend stream data.
- Updated Vue integration to cycle `laseron → powerramp → uniform → time`
  when toggling color modes.

Signed-off-by: Yury Rodzikau <y.rodzikau@c1-technologies.com>

---------

Signed-off-by: Yury Rodzikau <y.rodzikau@c1-technologies.com>
… get absolute path of 8c48dc68_core.apidocs(2) (#40)
…to job execution lifecycle (#43)

- SDK bindings (`libmcdriver_scanlabsmc_sdk.*`):
  - Added bindings for `slsc_ctrl_write_digital_x`, `slsc_ctrl_write_digital_mask_x`,
    `slsc_job_write_digital_x` and `slsc_job_write_digital_mask_x`.
  - Introduced new enum `slsc_DigitalOutput` to address digital output channels.
  - Added wrapper functions with logging support for journaling/tracing.

- Job instance (`libmcdriver_scanlabsmc_smcjobinstance.cpp`):
  - Digital output is now explicitly initialized to `0` before a job starts.
  - Output is set to `1` immediately after `slsc_job_begin` to signal job activation.
  - On finalization, output is set back to `0` before stopping the recorder.
  - Recording start/stop has been fully enabled to capture digital transitions.

  Signed-off-by: Yury Rodzikau <y.rodzikau@c1-technologies.com>
alexanderoster and others added 30 commits January 28, 2026 16:56
…and implement scatterplot channel fill (#68)

### feat(scanlab): convert microvector laser delays using RTC tick resolution
- Added `ConvertDelaySecondsToTicks()` to convert delay seconds into RTC ticks
  (1 tick = 1/64 µs) and clamp to the supported range [0..32767].
- Updated `AddMicrovectorMovement()` to use the new conversion for LaserOnDelay
  and LaserOffDelay while preserving `-1` as the “no delay” sentinel.

### feat(libmcenv): implement scatterplot channel population from datatable
- Implemented `fillScatterplotChannel()` to populate scatterplot channel/column
  vectors from the datatable rows with scale and offset applied.
- Added basic validation and guarded channel/column creation to avoid duplicate
  entries.

Signed-off-by: Yury Rodzikau <y.rodzikau@c1-technologies.com>
…ectors and enable per-hatch power via para_line (#69)

### feat(scanlab/rtc): write laser power before microvector execution
- Added a `writePower(...)` call in `CRTCContext::AddMicrovectorMovement` to apply
  `m_LaserPowerInPercent` before issuing `n_micro_vector_abs(...)`.
- Ensures microvector replay uses the intended power level per movement segment.

### feat(scanlabsmc): switch hatch drawing to parameterized power lines
- Removed per-job analog output write (`slsc_job_write_analog_x`) from `drawHatchesEx`.
- Introduced per-hatch power parameterization using:
  - `slsc_job_para_enable(...)`
  - `slsc_job_para_line(..., paraPower)`
- Uses `dPowerFactor` as the parameter value for each hatch line, enabling power to
  be controlled consistently via the SMC parameterized line API.

This change aligns RTC microvector execution and SMC hatch generation with explicit
laser power handling, improving consistency of power application across scan paths.

Signed-off-by: Yury Rodzikau <y.rodzikau@c1-technologies.com>
Vue2 is unfortunately not maintained anymore.
Abstracted User Interface Framework and added a new client

    svelte (using shadcn widget toolkit)
    vue2 legacy remains

* Committed User Interface Refactor to API V2

* Fixed API Docs

* Fixed API Docs

* Added Frontend code

* Added Image backend V2

* Added Image V2 in Client

* Fixed OpenAPI

* Image API Handler

* Updated UI Expression for booleans, added visible flag

* Commited ClientV2 code for Grid and Tabs

* Added Tabs Module

* Updated FrontedState Definition to abstract property interface

* Made ContentForm use FrontendStore

* Client code for content form

* Ported Log UI Widget to V2

* Ported Log UI Widget to V2

* added new client dist

* Refactored UI Log widget

* Refactored build list

* Refactored build list UI

* Build list appearance

* updated List display

* Implemented build execution list and alert list incremental id

* Implemented build execution list and alert list incremental id

* Add ClientV3 client

* Guard node-ipc in client build

* Added build scripts for vue 3

* Added Parameterlist v2

* Updated V2 client

* Migrate configuration list widget to v2 frontend updates

* Add /api/dataseries endpoint and switch chart client path

* Migrate chart widget metadata updates to frontend v2

* Migrate graphic, glscene, layerview, and custom modules to v2

* Move layerview, config, and state endpoints off /ui

* Migrate remaining client /ui calls to dedicated /api handlers

* Unregister legacy api/ui handler

* Add content leaf module support for v2 widgets

* Register backend leaf modules for content widgets

* Refactor content to module container with leaf submodules

* Fix recursive content component registration

* Update OpenAPI spec for dedicated API endpoints

* Complete refactoring of Client directory structure

* Updated OpenAPI specification

* Reorder general endpoints and merge stream into data tag

* Document build toolpath layer endpoint in OpenAPI

* Replace ContentLeaf abstraction with ModuleFactory pattern in Vue 2 client

Remove the ContentLeaf/ContentItem layer and promote each leaf type to a
first-class module. Introduce AMCModule_Factory.vue (globally registered)
for dynamic dispatch, eliminating the recursive component reference.
Fix legacy state compatibility by unwrapping the ContentLeaf shell to
extract entity/button payload from items[0]. Update build scripts and
.gitignore for the Client/core + Client/vue2 directory split.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix ContentLeaf v2 nesting depth and image visibility in Vue 2 client

ButtonGroup/Form updateFromV2Attributes now navigates submodules[0].submodules
to reach individual button/entity entries - ContentLeaf adds one extra nesting
level that the code previously assumed did not exist, causing button captions
to be blanked on every poll cycle and form entity updates to be dropped.

Image vue component now binds max-width/max-height as undefined when the
module value is 0 (unspecified), preventing the v-img from being collapsed
to zero size and appearing invisible.

ContentLeaf (C++) addContentToJSON now delegates to addLegacyContentToJSON
so live poll responses carry full item data (buttons, imageresource, etc.).
Paragraph gains updateFromJSON for live text/visible updates.
AMCApplication clears FormEntityMap on state refresh.

Co-authored-by: Cursor <cursoragent@cursor.com>

* New API Docs

* Complete UI evolution plan Phase 1

Backend: register caption and visible attributes for Logs, GLScene, Graphic, LayerView, Grid and Tabs C++ modules; add minlength/maxlength constants and form string validation emission; expose selectionvalueuuid in AlertList frontend attributes.

Frontend JS: consume caption and visible in updateFromV2Attributes for all module types; update Form module to propagate validation, minvalue, maxvalue, minlength and maxlength attributes.

Vue components: add v-if visible guard to root element of all module components; fix ConfigurationList to use backend-provided entrybuttons and wire buttonvalueuuid; fix Form string validation null guards.

Shared infrastructure: add AMCModule_TableBase.vue reusable table component with sticky header and empty state; add AMCModule_TableUtils.js with shared formatters, badge maps and event helpers; migrate AlertList, ExecutionList and BuildList to TableBase and TableUtils.

Runtime validation: add AMCModuleSchema.js with required/optional field definitions for all 18 module types; integrate validateModuleJSON into createModuleInstance in AMCApplication.js.

* Fix Vue module layout and space-filling coherence

- Content: replace non-functional HTML attributes (width/height on div) with proper scoped CSS; use block layout to preserve Grid column track resolution; replace v-card-title/subtitle outside v-card with plain styled divs
- Tabs: replace hardcoded height:95% on v-tabs-items with flex column layout so tab content fills remaining height
- Standardize roots: add width:100% and min-height:0 to Chart, ConfigurationList, Image, Upload, VideoStream; remove redundant v-container in ConfigurationList
- GLScene, Graphic: move inline styles to scoped CSS classes
- Add min-height:0 to all flow-layout module roots (AlertList, BuildList, ExecutionList, Form, Paragraph, ParameterList, ButtonGroup, TableBase)

Co-authored-by: Cursor <cursoragent@cursor.com>

* UI Phase 2+: form module, layout fixes, content card widget

Form module (Phase 2):
- New field types: number, slider, datetime, multiselect, calculated
- Section containers (collapsible, icon, description)
- Action bar with submit/cancel, dirty-state tracking, optimistic/pessimistic policy
- /api/validate endpoint for server-side cross-field validation
- AMCFormField.vue reusable field component

LayerView / GLScene fixes:
- Correct module.uuid scoping in created() hooks
- LayerViewerInstance always initialised (never null during render)
- Platform item synthesised from v2 module attributes (platformuuid)
- baseimageresource registered as resource UUID instead of filename
- layercount uses OptionalIntegerValue to handle v2 mode gracefully

BuildList thumbnail fix:
- Expose defaultthumbnail UUID from C++ v2 attributes
- JS falls back to defaultThumbnailUUID when job.thumbnail is absent

App.vue layout:
- Content card expanded to 100% width (was 90%)
- CSS flex-based full-height layout replacing JS pixel calculation
- v-container replaced with plain div to avoid Vuetify max-width cap

Content widget upgrade:
- cardstyle attribute: none / elevated / outlined / tinted
- spacing attribute: px gap between stacked child modules
- elevation and cardcolor for fine-tuning card appearance
- Component fills height:100% in grid cells and page columns
- Plan documentation: amcf-content-widget-upgrade.html

* Fix full-height layout and tab content snap

App.vue — height chain fix:
- Add height:100% to html, body, #AMCApp and .v-application--wrap
- Override Vuetify's min-height:100vh so all descendant height:100%
  rules (Grid, LayerView, Logs, Tabs, etc.) resolve against a definite
  ancestor height instead of collapsing to content size

AMCModule_Tabs.vue — tab content snap fix:
- Add ::v-deep .v-window__container { height:100% } so Vuetify's
  transition wrapper keeps its flex-allocated height after the slide
  animation ends (previously it snapped back to height:auto)
- Remove overflow:auto from .tabs-item; each child module manages
  its own scroll

amcf-ui-widget-evolution-plan.html — updated to reflect current state

* Add configurable login screen styles (classic, industrial, luminous, split)

Introduce a loginstyle XML attribute on the <login> node with four visual
variants: classic (backward-compatible default), industrial (dark frosted
glass), luminous (light frosted glass), and split (branded left panel with
luminous-style right form). Backend parses loginstyle, loginsubtitle, and
panelresource and emits them via /api/config. Frontend Dialog_Login.vue
conditionally renders the selected style. Example config updated to
demonstrate the industrial style.

Made-with: Cursor

* Apply ScanLab corporate design and add separator/statusbanner widgets

Reskin the entire UI to follow the ScanLab corporate style guide: light gray backgrounds, white card surfaces, ScanLab red (#C8102E) as the primary accent, and dark neutral header/footer bars. Introduces a token-based design system (tokens.css) with CSS custom properties for colors, typography, spacing, radius, and elevation, enabling full theme skinning via JSON overrides.

New widgets: separator (horizontal/vertical dividers) and statusbanner (severity-aware status indicators) implemented across all three layers (C++ backend, core JS modules, Vue 2 components). Config.xml updated with improved page layouts, descriptive menu icons, and integration of the new widgets throughout dashboard, build status, system status, and dialog pages.

Made-with: Cursor

* Add workflow editor widget with drag-and-drop step management

Introduces a new workflow module type for defining machine workflows in the UI. Includes a step palette, parallel branch groups, step property editor, undo support, and svelte-dnd-action integration. Backend content item allows the server to recognize workflow elements. Test pages added to both WidgetTest and EOSP examples.

Made-with: Cursor

* Add Svelte 5 frontend client with shadcn-svelte UI components

Complete Svelte 5 client implementation including login page, all AMCF module components (forms, grids, tabs, charts, logs, alerts, builds, parameters, etc.), shadcn-svelte UI library, SvelteKit routing, and build configuration.

Made-with: Cursor

* Added code to client/core

* fixed commit

* Added UI Workflow items

* Added build scripts

* Add dialogs, snackbar, theming, error handling and menu polish to Svelte client

Made-with: Cursor

* Updated Svelte Framework and Backend adjustments

* Updated Build Systems to support svelte

* Updated Package XML

* Fixed XML Document reader error verbosity

* Fixed svelte button group field submission

* updated client dists

* Updated WidgetTest

* Removed python dependency for client svelte

* Added Client build scripts

* Added Svelte github hash

* added new vue client

* Added Resource Package checksumming

* Added Svelte as default client to WidgetTest

* Commented out client integrity test

* Updated BuR Driver with uint8 type

* Svelte Client: Fixed parameter list height

* Updated Client build scripts

* Updated Svelte Client

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants