{"id":20215480,"url":"https://github.com/kitwaremedical/slicermarkupconstraints","last_synced_at":"2025-10-16T00:06:58.789Z","repository":{"id":40758043,"uuid":"508007950","full_name":"KitwareMedical/SlicerMarkupConstraints","owner":"KitwareMedical","description":"Slicer module to enable Slicer extension developers to constrain  and synchronize markups and control points of different nodes. ","archived":false,"fork":false,"pushed_at":"2023-03-08T16:40:37.000Z","size":40127,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-02-24T07:06:51.634Z","etag":null,"topics":["3d-slicer-extension"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KitwareMedical.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-27T17:47:07.000Z","updated_at":"2024-07-04T06:56:35.000Z","dependencies_parsed_at":"2024-11-14T12:30:31.362Z","dependency_job_id":null,"html_url":"https://github.com/KitwareMedical/SlicerMarkupConstraints","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KitwareMedical%2FSlicerMarkupConstraints","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KitwareMedical%2FSlicerMarkupConstraints/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KitwareMedical%2FSlicerMarkupConstraints/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KitwareMedical%2FSlicerMarkupConstraints/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KitwareMedical","download_url":"https://codeload.github.com/KitwareMedical/SlicerMarkupConstraints/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241652964,"owners_count":19997578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-slicer-extension"],"created_at":"2024-11-14T06:22:34.558Z","updated_at":"2025-10-16T00:06:58.718Z","avatar_url":"https://github.com/KitwareMedical.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Markup Constraints Extension\n\nMarkupConstraints is a Slicer module to enable Slicer extension developers to constrain \nand synchronize markups and control points of different nodes. \n\nThis extension was created during [Slicer Project Week 37][pw37] for the\n[Q3DC Extension][q3dc].\n\nSee the [Architecture Overview][arch] for details on the functionality and implementation \nof this module.\n\nSee the [API Documentation][api] for details on how to consume and extend this module. \n\n[q3dc]: https://github.com/DCBIA-OrthoLab/Q3DCExtension\n[pw37]: https://projectweek.na-mic.org/PW37_2022_Virtual/Projects/MarkupConstraints/\n[arch]: ./Docs/Architecture.md\n[api]: ./Docs/API.md\n\n## Screenshots and Animations\n\n![Show line of projection to an axis](./Docs/project-anchor.gif)\n![Show mixture of arbitrary markup nodes](./Docs/project-angle.gif)\n![Chain of fixed distance constraints on multiple line nodes](./Docs/length-chain.gif)\n![Lock point to axis](./Docs/project-axis.gif)\n![Nearest point on a model](./Docs/model-transform.gif)\n\n## Build and Install\n\nThe extension is not yet available on the [Slicer Extension Index][index]. The extension \ncontains only a python scripted module; refer to the [Extension Build Instructions][build]\nfor more details.\n\n[index]: https://github.com/Slicer/ExtensionsIndex\n[build]: https://slicer.readthedocs.io/en/latest/developer_guide/extensions.html#build-an-extension\n\n## Scope and Limitations\n\nThe constraint system is primarily intended for refining of interactive tools, or for\ndeterministic relative placement of control points. As such the constraint API is only\nintended to handle forward constraints, and there is not yet a mechanism for a\nconstraint to propagate a change to more than one point at a time.\n\nInverse kinematics is not in the scope of this project; it may be possible to extend the\nconstraint API to allow integration of an existing IK library, but there are no plans to\ndo so for now.\n\n## Acknowledgements\n\n- David Allemang (Kitware Inc.)\n- Jean-Christophe Fillion-Robin (Kitware Inc.)\n- Lucia Cevidanes (University of Michigan)\n- Maxime Gillot (University of Michigan)\n- Baptiste Baquero (University of Michigan)\n\nWork for this project originally began for the [Q3DC Extension][q3dc]; see that extension \nfor an example of usage of this module.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitwaremedical%2Fslicermarkupconstraints","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkitwaremedical%2Fslicermarkupconstraints","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitwaremedical%2Fslicermarkupconstraints/lists"}